我需要找到以下元素:
String myString = driver.getElement(By.xpath("//tr//input[name='ID1']//td[3]//b")).getText();
但是这不起作用,因为<input and <td
元素是<tr
的相同子元素。我必须使用<input
来查找此元素。我怎么能这样做?
<input type="hidden" name="ID1" value="87660">
<td class="mainCtr" valign="top">
<input type="checkbox" id="trans2660" onclick="doIndividual(this);">
<a href="javascript: .............
</a>
</td>
<td class="mainCtr" valign="top">
</td>
<td class="mainLt" valign="top">
<b>Grovl</b><br>
3<br>
</td>
<td class="maowsLt" valign="top">
7052<br>
L323<br>
答案 0 :(得分:1)
你可以做几件事
1。您可以使用“follow-sibling”。
我没有足够使用此属性为其发布代码,但您可以在此处查找https://www.google.com/search?q=xpath+following-sibling&oq=follow+siblin&aqs=chrome.1.69i57j0l3.3639j0j7&sourceid=chrome&espv=210&es_sm=122&ie=UTF-8
2。获取输入的父级并找到第3个td
WebElement inputElement = driver.findElement(By.xpath("//tr//input[name='ID1']"));
WebElement parent = inputElement.findElement(By.xpath(".."));
String myBoldText = parent.findElement(By.xpath("//td[3]//b")).getText();
答案 1 :(得分:1)
您可以使用..
上升一级。
假设我们有这样的HTML:
<ul>
<li class="sibling">Stuff</li>
<li class="target">Target</li>
</ul>
我们可以通过它的兄弟“sibling”找到带有“target”类的list元素,如下所示:
//ul/li[@class="sibling"]/../li[@class="target"]
答案 2 :(得分:0)
如果使用cssSelctors会更好,
String myString = driver.getElement(By.cssSelector("input[name='ID1'] td.mainLt>b")).getText();
UI更改频繁,因此对于自动化测试用例,我建议您选择cssSelector over xpath ..