Here is part of html code:<pre class="snippet-code-html lang-html prettyprint-override">
<td class="audit-context-break-word text-left" nowrap="nowrap"> <b class="ng-binding">PONumber</b></td> <td class="audit-context-break-word text-left ng-binding">20202022 02_001 </td>
I need to get only text inside (expected value: 20202022 02_001) I tried following variants:
By.xpath("/descendant::*[.='PONumber']/../descendant::*[@class=\"audit-context-break-word text-left ng-binding\"]/text()") By.xpath("/descendant::*[.='PONumber']/../following::text()")
The issue is that in FirePath selected text is found, but not in test. It is failed due to timeout exception, because element is not found
What is the reason of the failure?Answer1:
You can use
following-sibling to write the Xpath.
WebElement element=driver.findElement(By.xpath("//td[b[contains(text(),'PONumber')]]/following-sibling::td")); String text = element.getText(); System.out.println(text);<ol><li>
I'm identifying appropriate web element on the webpage and saving it in web element.</li> <li>
getText() method to obtain text from that web Element and saving it in string
Print that string
<a href="https://developer.mozilla.org/en-US/docs/Web/XPath/Axes/following-sibling" rel="nofollow">
following-sibling</a> is something you should use:
driver.findElement(By.xpath("//td[b = 'PONumber']/following-sibling::td")).getText();Answer3:
document.evaluate("//span[@class='tableNode']/text()[preceding-sibling::br and following-sibling::br]", document, null, XPathResult.STRING_TYPE, null).stringValue;
if you use Python or Java, i can presentAnswer4:
I had a similar problem where an element was visible but tests wouldn't pass on isTextPresent. When I checked the source code, it was<li>2-1180 \&\nbsp CITY 2</li>, whereas the test was looking for "2-1180 CITY 2". Check if you have a similar problem too. Let us know what works for you, would be interested in knowing.
Note: do not downvote, just trying to help.