使用Java,Selenium和PhantomJS时遇到问题。我想从网页上获得多个按钮链接(使用css选择器),但它不起作用。
link = driver.findElement(By.cssSelector("div.a:nth-child("+ elementCounter +") > div:nth-child(3) > a:nth-child(1)")).getAttribute("href");
elementCounter++;
System.out.println("counters: "+elementCounter + link);
我使用的elementCounter确实计数+1,但css选择器中的计数器不起作用(它继续获得相同的buttonlink)。 代码确实在while循环中,但它仍然无效。
下面是html结构:
<div class="a">
<a href="test.php?id=393">hello world</a>
</div>
<div class="b">
<a href="test.php?id=394">hello world</a>
</div>
<div class="c">
<a href="test.php?id=395">hello world</a>
</div>
答案 0 :(得分:1)
如果可能,我会切换到XPath。如果对子父母关系有任何其他要求,则很容易添加。
这会获取页面中<div>
元素下的所有链接:
List<WebElement> anchorElements = driver.findElements(By.xpath("//div/a"));
System.out.println(anchorElements.size() + " links found");
for (WebElement a : anchorElements) {
System.out.println("Link: " + a.getText() + " links to " + a.getAttribute("href"));
}
或者在Java 8中
List<WebElement> anchorElements = driver.findElements(By.xpath("//div/a"));
System.out.println(anchorElements.size() + " links found");
anchorElements.stream().forEach(a -> System.out.println("Link: " + a.getText() + " links to " + a.getAttribute("href"));