For循环用于检查Selenium WebDriver中的项目列表

时间:2015-05-12 13:17:18

标签: java selenium selenium-webdriver webdriver

我在下面编写了检查列表Web元素的代码,但是下面的代码正在运行但是只有第一项它没有循环到循环结束。

List <WebElement> listofItems = wd.findElements(By.xpath("//*[starts-with(@id,'result_')]//div//div[1]//div//a//img"));

for (int i=1; i<=listofItems.size(); i++)
{
   listofItems.get(i).click();
   wd.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
   System.out.println(i);
   System.out.println("pass");
   wd.navigate().back();
}

2 个答案:

答案 0 :(得分:4)

@Saifur 已经很好地解释了这个问题。所以,我将把你看到的代码放到

$scope.Somefunction = function (id) {
    for (var i = 0; i < $scope.Cities.length; i++) {
        if ($scope.Cities[i].id == id) {
            var spliced = $scope.Cities.splice(i, 1);
            spliced[0].destroy();
            break;
        } 
    }
}

所以,上面我刚刚调整了一下你的代码并得到了相关的评论,其中包含了更改以及原因。希望这对你有用。 :)

答案 1 :(得分:3)

这可能是DOM刷新的问题。您无法找到列表并来回浏览元素并引用相同的列表,因为DOM在首次单击后已刷新。该问题的最佳解决方案是即时查找元素。此外,一旦您设置了该驱动程序实例,隐式等待就是坚定的。因此,您不必设置等待每个元素的查找。而是将其设置为实例化驱动程序的位置。(可能)。但是,我认为明确的等待是最合适的。

    $(document).ready(function() { 
    $("orgTable").tablesorter({ 
        headers: { 
            4: { 
                sorter: false 
            }, 
            5: {               
                sorter: false 
            } 
        } 
    }); 
});