java - 使用 equalsIgnoreCase 时,if else 在 selenium webdriver 中不起作用

标签 java selenium if-statement selenium-webdriver automation

try {
    List<WebElement> list1 = driver.findElements(By.tagName("a"));

    for (WebElement e : list1) {
        if (e.getAttribute("href").equalsIgnoreCase("/ProductsRoute.do")) {
            if (driver.findElement(By.id("buttonCheck++Check")).isDisplayed()) {
                driver.findElement(By.id("buttonCheck++Check")).click();
                ProductConfPageexceptionHandler(driver);
                break;
            }
        else if (driver.findElement(By.name("Next")).isDisplayed()) {
                WebElement nextBut = driver.findElement(By.name("Next"));
                nextBut.click();
                break;
            }
        break; 
        }   
}
    }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

问题是,当脚本执行 e.getAttribute("href") 时,它会查找/ProductsRou​​te.do。如果没有找到它,那么它应该在那里中断。但问题是我得到了 java.lang.NullPointerException。

期望的是,它应该尝试找到 href/Products.do,如果它不存在,它应该在那里中断。如果它在/Product.do中,那么它应该执行下一个if。需要您帮助查找问题。谢谢大家!

最佳答案

可能的解决方案:

  1. 检查列表大小并确保元素存在

    assertThat(list1.size() >0).isTrue()

  2. 在 if 条件之前给予一些等待时间

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

关于java - 使用 equalsIgnoreCase 时,if else 在 selenium webdriver 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37182782/

相关文章:

java - Maven 执行 :java : how to open and read a file in the resources directory?

java - 无法从 Selenium 中的输入元素获取文本

c# - Selenium : Call javascript function on page

php - 调用 if 中的 php 变量

r - 使用另一列的字符串添加列

c++ - 如何检查数组是否等于某组值

java - 代码java中有语法错误

java - Android:当我为 ListView 设置 OnClickListener 时

java - 从接口(interface)实现方法中抛出自定义异常

java - 如何使用 Selenium Webdriver 将文本设置到 TextArea 中?