Selenium WebDriver和xpath:一个更复杂的选择

时间:2012-06-06 09:00:21

标签: xpath selenium webdriver

所以,让我们说我的结构在某些时候看起来像这样:

..........
<td>
  [...]
  <input value="abcabc">
  [...]
</td>
[...]
<td></td>
[...]
<td>
  <input id="booboobooboo01">
  <div></div> <=======I want to click this!
</td>
.........

我需要点击该div,但我需要确定它与包含value="abcabc"输入的td位于同一行。我也知道我需要点击的div(没有id或我可以使用的任何其他相关属性)在与第一个td相同级别的td中,在输入之后使用id CONTAINING“boo”(动态生成,我只知道id的根部分)。 td包含我可以使用的任何相关内容。 这是我尝试的xpath:

//input[@value='abcabc']/../td/input[contains(@id,'boo')]/following-sibling::div

//input[@value='abcabc']/..//td/input[contains(@id,'boo')]/following-sibling::div

当然,它们都没有用(无法找到元素)。 我想知道是否有一种选择div和方式的方法。

编辑://input[@value='abcabc']/../../td/input[contains(@id,'boo')]/following-sibling::div是正确的方法。这是由接受答案的人建议的。还要注意他提供了一种稍微不同的方式。有关详细信息,请参阅他的回答。

2 个答案:

答案 0 :(得分:3)

尝试

//input[@value='abcabc']/ancestor::tr[1]/td/input[contains(@id,'boo')]/following-sibling::div[1]

请注意,//input[@value='abcabc']/..只会转到父<td>,这就是为什么你的工作不起作用。

答案 1 :(得分:1)

另一个可能有用的XPath,有点简单:

//input[@id='booboobooboo01']/../div[1]