【问题标题】:JAVA Selenium - getting hrefs from html in a loopJAVA Selenium - 循环从html获取href
【发布时间】:2015-06-15 20:38:21
【问题描述】:
我正在尝试获取页面上几个类似元素的 href,然后在这些 href 中找到最后创建的(最大)id。我有一个循环,但它只找到第一个元素而不搜索其余元素。你知道里面写错了什么吗?
ArrayList<Integer> tablicas = new ArrayList<Integer>();
int i;
for(i = 0; i < 90; i++) {
String s = driver.findElement(By.cssSelector("a.linkOffer")).getAttribute("href");
String p = s.substring(19, s.length());
int numer = Integer.parseInt(p);
System.out.print(p);
for(int indeks : tablicas) {
if(indeks == numer) {
continue;
} else {
tablicas.add(numer);
}
}
} System.out.print(tablicas);
【问题讨论】:
标签:
java
html
selenium
for-loop
href
【解决方案1】:
您的代码 sn-p 中有多个错误。
driver.FindElement() 将返回一个 WebElement。 - 由于您的 css 选择器对于循环的每次迭代都是相同的,因此它将始终返回相同的 WebElement。
把你的循环改成这样:
for(WebElement el : driver.findElements(By.cssSelector("a.linkOffer"))) {
String target = el.getAttribute("href");
..
}
【解决方案2】:
如果您想查找包含文本“Nowa oferta dokument”的所有元素,请使用driver.findElements(它将返回与您的搜索条件匹配的元素列表)而不是findElement 并循环遍历所有元素。
ArrayList<Integer> tablicas = new ArrayList<Integer>();
java.util.List<WebElement> elements = driver.findElements(By.xpath("//*[text()='Nowa oferta dokument']"));
for(WebElement element : elements)
{
element.getAttribute("href");
String p = s.substring(19, s.length());
int numer = Integer.parseInt(p);
System.out.print(p);
for(int indeks : tablicas) {
if(indeks == numer) {
continue;
}
else {
tablicas.add(numer);
}
}
}
System.out.print(tablicas);
希望这会有所帮助。