selenium web驱动程序应该停止执行最后一个元素

时间:2014-03-20 12:27:52

标签: selenium

我是selenium的新手,并试图使我的工作自动化。我的结果包括下一页的分页。在最后一页"下一页"按钮被禁用,我的代码不应该访问该特定元素。

List<WebElement> pagesize = driver.findElements(By.xpath("html/body/div[1]/div[3]/div[3]/div/span"));
while(true) {
    for(int i=5; i<=pagesize.size(); i++) {
        WebElement Analystelem = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[3]/div["+i+"]/span"));
        List<WebElement> pagesize = driver.findElements(By.xpath("html/body/div[1]/div[3]/div[3]/div/span"));
        System.out.println(pagesize.size());

        while(true) {
            for(int i=5;i<=pagesize.size();i++) {
                WebElement Analystelem = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[3]/div["+i+"]/span"));
                if(elementpage.isEnabled()) {
                    elementpage.click();
                }
                else {
                    System.exit(1);
                }

注意:旧搜索是此处的下一个按钮。 在结果的最后一页我得到一个例外

"Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"html/body/div[1]/div[3]/div[3]/div[10]/span"}"

1 个答案:

答案 0 :(得分:0)

首先,我怀疑你是否搜索了一个范围,并将其参考文献存储在&#39; Analystelem&#39;但是您在&#39; elementpage&#39;。

上调用了点击操作

如果您提供的代码比下面给出的代码工作正常。当Selenium找到元素并试图点击它时;它会抛出异常,处理你觉得最好的异常,但不会破坏你的执行。

只需将您的代码放入Try Catch块,如下所示:

while(true)
{
for(int i=5;i<=pagesize.size();i++)
{
    WebElement Analystelem=driver.findElement(By.xpath("html/body/div[1]/div[3]/div[3]/div["+i+"]/span"));
    if(elementpage.isEnabled())
    {
        Try
        {
               elementpage.click();
        }
        Catch (Exception ex)
        {
            //Do whatever you want to do here
        }
    }
    else
    {
        System.exit(1);
    }
}
}

此外,您无需检查天气是否启用了元素。让try catch做它的工作。更合适的代码:

while(true)
{
for(int i=5;i<=pagesize.size();i++)
{
    WebElement Analystelem=driver.findElement(By.xpath("html/body/div[1]/div[3]/div[3]/div["+i+"]/span"));
    Try
    {
        elementpage.click();
    }
    Catch (Exception ex)
    {
        System.exit(1);
        //Do whatever you want to do here
    }
}
}