Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想遍历一个页面的链接,但是我的程序会在这两个链接之间终止,而不会抛出任何错误_Java_Selenium_Selenium Webdriver - Fatal编程技术网

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++;
        }

    }