JAVA Selenium - 在循环中从 html 获取 href
JAVA Selenium - getting hrefs from html in a loop
我正在尝试获取页面上几个相似元素的 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);
您的代码段中存在多个错误。
driver.FindElement() 将 return 一个 WebElement。 - 由于您的 css 选择器对于循环的每次迭代都是相同的,因此它将始终 return 相同的 WebElement。
将循环更改为如下内容:
for(WebElement el : driver.findElements(By.cssSelector("a.linkOffer"))) {
String target = el.getAttribute("href");
..
}
如果要查找包含文本 'Nowa oferta dokument' 的所有元素,请使用 driver.findElements
(这将 return 符合搜索条件的元素列表)而不是 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);
希望对您有所帮助。
我正在尝试获取页面上几个相似元素的 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);
您的代码段中存在多个错误。
driver.FindElement() 将 return 一个 WebElement。 - 由于您的 css 选择器对于循环的每次迭代都是相同的,因此它将始终 return 相同的 WebElement。
将循环更改为如下内容:
for(WebElement el : driver.findElements(By.cssSelector("a.linkOffer"))) {
String target = el.getAttribute("href");
..
}
如果要查找包含文本 'Nowa oferta dokument' 的所有元素,请使用 driver.findElements
(这将 return 符合搜索条件的元素列表)而不是 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);
希望对您有所帮助。