【问题标题】:checking for element present or not using Selenium WebDriver page factory?使用 Selenium WebDriver 页面工厂检查元素是否存在?
【发布时间】:2013-07-29 20:15:07
【问题描述】:

使用普通的 WebDriver 方法检查带有 findElements 的元素很简单,例如:

boolean exists = driver.findElements( By.id("...") ).size() != 0

Page Factory初始化的元素如下:

@FindBy(name = "filter")
private WebElement filterText;

但是我们如何在我们的页面中检查该元素是否存在于页面上??

【问题讨论】:

  • 您正在使用哪个绑定 selenium-webdriver
  • @Babai:我正在使用 java 和 selenium-webdriver
  • @vincebowdren assert 可能只是测试用例失败,我想要的是,根据页面上是否存在元素做出决定
  • @VidurOberoi 我只知道 Ruby ..那么对不起..

标签: selenium selenium-webdriver


【解决方案1】:

isDisplayed() 方法应该可以完成这项工作:

if (filterText.isDisplayed()) {
    filterText.doStuff();
}

【讨论】:

  • 是的,它会完成工作,但有时有些元素存在但在特定时间点隐藏!这不会捕捉到,我想出了一些东西,看看它stackoverflow.com/a/18145746/2043083
  • 只有当元素在页面上时才会起作用。如果没有,它会返回一个异常!
【解决方案2】:

这是我想出的:

public boolean isElementPresent(WebElement we)
    {  
        try {

            we.getTagName();

        } catch (NoSuchElementException e) {
            flag = 1;
        }   
       if (flag == 1)
            return true;  
       else
           return false;
    }

这是非常基本但有效的方法..

【讨论】:

    猜你喜欢
    • 2014-06-23
    • 2013-10-30
    • 1970-01-01
    • 2019-08-22
    • 2011-09-25
    • 2012-03-22
    • 1970-01-01
    • 2011-12-20
    • 2012-09-29
    相关资源
    最近更新 更多