尝试使用Java和PhantomJS从Selenium的网页获取多个链接

时间:2015-12-23 15:15:34

标签: java selenium phantomjs

使用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>

1 个答案:

答案 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"));