1

我需要找到以下元素:

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>
4

3 回答 3

1

您可以使用..上一级。

假设我们有这样的 HTML:

<ul>
    <li class="sibling">Stuff</li>
    <li class="target">Target</li>
</ul>

我们可以通过类为“sibling”的兄弟元素找到类为“target”的列表元素,如下所示:

//ul/li[@class="sibling"]/../li[@class="target"]
于 2013-10-14T19:52:23.713 回答
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();
于 2013-10-14T18:05:58.887 回答
0

如果使用cssSelctors会更好,

String myString = driver.getElement(By.cssSelector("input[name='ID1'] td.mainLt>b")).getText();

UI 更改更频繁,因此对于自动化测试用例,我建议您选择 cssSelector 而不是 xpath ..

单击此处了解有关 cssSeletors 的更多信息

于 2013-10-15T10:09:13.403 回答