有没有办法用Java调用Selenium Webdriver中的nextElementSibling?

时间:2015-05-19 20:47:28

标签: java selenium-webdriver

我正在处理一个非常混乱的页面结构,而我所困的片段看起来像这样:

<div>
    <h3>...</h3>
    <ul>...</ul>
    <h3>...</h3>
    <ul>...</ul>
    ...
</div>

我想得到一个<ul>元素,所以我可以深入挖掘它并从中检索我真正需要的实际值(它里面有一个表)。目前,我能够获得<h3>前面的<ul>元素。由于ul-elements没有任何我可以用来直接获取它们的唯一标识符,我希望通过获取h3-tag之后的元素(在同一级别上)来实现它。有没有办法得到似乎是nextElementSibling的东西? 谢谢!

NB! h3和ul元素没有严格的序列号 - 它们之前可能有也可能没有几个元素,所以第n个孩子似乎不是那里的选择。

1 个答案:

答案 0 :(得分:2)

您可以使用xpath或执行一些javascript来实现此目的。

Xpath的:

driver.find(By.xpath("//div/h3/following-sibling::ul[1]"));

JavaScript的:

JavaScriptExecutor jsExec = (JavaScriptExecutor)driver;
WebElement ulElement = jsExec.executeScript("return arguments[0].nextSibling;", driver.find(By.cssSelector("div h3")));

希望有所帮助!