Java 我想遍历一个页面的链接,但是我的程序会在这两个链接之间终止,而不会抛出任何错误
因为它没有显示文本(使用它进行调试),我不明白为什么程序会终止。许多Java 我想遍历一个页面的链接,但是我的程序会在这两个链接之间终止,而不会抛出任何错误,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,因为它没有显示文本(使用它进行调试),我不明白为什么程序会终止。许多标记,包括第一个标记,都没有文本,这意味着 String linkText = element.getText(); 在第一轮中为false,因此currentElement永远不会递增,并且您会一直获得行中的第一个标记 if (!(element.getText().isEmpty())) 不要使用变量,只需使用循环中的i索引即可 WebElement element = listOfLinks.get(currentEl
标记,包括第一个标记,都没有文本,这意味着
String linkText = element.getText();
在第一轮中为false
,因此currentElement
永远不会递增,并且您会一直获得行中的第一个
标记
if (!(element.getText().isEmpty()))
不要使用变量,只需使用循环中的i
索引即可
WebElement element = listOfLinks.get(currentElement);
for(int i=0;i
程序不会在
元素.getText()上终止代码>,它将一直运行,直到循环条件不再有效。您的程序看起来不错,但您应该更改以下代码行:
for (int i = 0; i < noOfLinks; i++) {
WebElement element = listOfLinks.get(i);
//...
}
到
因为您将currentElement
值设置为0
,所以您的代码不会遍历列表中的所有元素 只需传递i
而不是currentElement
,您的代码如下
WebElement element = listOfLinks.get(i);
for(int i=0;i
您可以使用迭代器接口在元素之间进行迭代,而不是使用if
循环。让我知道它是否有效
List listOfLinks=driver.findElements(按.tagName(“a”));
Iterator it=listOfLinks.Iterator();
while(it.hasNext())
{
WebElement=it.next();
if(!(element.getText().isEmpty()){
字符串linkText=element.getText();
System.out.println(linkText);
driver.findElement(By.linkText(linkText))。单击();
字符串title=driver.getTitle();
如果(标题包含(“错误”)){
计数++;
}
driver.navigate().back();
wait.until(ExpectedConditions.elementtobelickable)(By.id(“amenu india col”));
listOfLinks=driver.findElements(按.tagName(“a”));
currentElement++;
你传递了currentElement=0,那么它是如何工作的亲爱的,传递我而不是currentElement好的,我明白你的意思了。我对列表的重新初始化有点困惑,有些人对如何创建一个新的静态计数器而不是使用我感到困惑。我将尝试一下,谢谢。
WebElement element = listOfLinks.get(currentElement);
WebElement element = listOfLinks.get(i);
for (int i = 0; i < noOfLinks; i++) {
WebElement element = listOfLinks.get(i);
if (!(element.getText().isEmpty())) {
String linkText = element.getText();
System.out.println(linkText);
driver.findElement(By.linkText(linkText)).click();
String title = driver.getTitle();
if (title.contains("error")) {
count++;
}
driver.navigate().back();
wait.until(ExpectedConditions.elementToBeClickable(By.id("amenu-india-col")));
listOfLinks = driver.findElements(By.tagName("a"));
currentElement++;
}
}