Selenium WebDriver:检查元素是否存在for while循环?

时间:2017-06-16 12:54:41

标签: java selenium selenium-webdriver automation

假设有一个页面,我想检查一个元素" abc"是否存在于页面上。如果元素不存在,那么我想点击其他元素" xyz",然后打开新页面,我想再次检查元素" abc"出现在页面上。如果再次不存在则单击相同的元素" xyz"这一切都在继续。

我使用while循环,下面是代码。请帮帮我。

在我的下面代码中:" elem_prev"是否每次都要检查的元素是否存在于页面上。 我的代码不起作用,现在它无法在循环中找到元素,但它应该像每个页面上的元素一样。请帮我解释这些概念。代码是否正确?

它表示循环中存在的元素无法定位元素。

Boolean elem_prev = driver.findElements(By.id("TM_TL_DD_WRK_GET_DATA")).size()!=0;
    while(elem_prev==false)
    {
        Thread.sleep(2000);
        driver.findElement(By.className("PSHYPERLINK")).click();

        Thread.sleep(2000);
        Alert a = driver.switchTo().alert();
        a.dismiss();

        Thread.sleep(10000);

        elem_prev = driver.findElements(By.id("TM_TL_DD_WRK_GET_DATA")).size()!=0;
    }

1 个答案:

答案 0 :(得分:0)

我建议您在循环中找到这样的元素:

WebElement element1 = driver.findElements(By.id("TM_TL_DD_WRK_GET_DATA"));
WebElement element2 = driver.findElement(By.className("PSHYPERLINK"));

while(element1==false){
    Thread.sleep(2000);
    element2.click();

    Thread.sleep(2000);
    Alert a = driver.switchTo().alert();
    a.dismiss();

    Thread.sleep(10000);

    element1.size()!=0;
}

然后在循环开始之前尝试SystemOutPrintln(element1);和/或SystemOutPrintln(element2);以确保它实际找到该元素。

如果它不打印元素,那么问题不在于循环,而在于您尝试查找元素的方式。

这将是重要信息,因为您可以尝试以其他方式查找元素。