使用webdriver查看元素是否存在而不抛出异常?

use*_*634 8 java webdriver selenium-webdriver

我是Selenium webdriver的新手,也许这个问题很明显.我是这样的情况:

如果该元素存在,请单击它并返回索引页面:

driver.findElement(By.id("...."])).click();
Run Code Online (Sandbox Code Playgroud)

如果不退出,请跳过它并返回索引页面.测试仍然没有任何异常抛出.

我知道一个解决方案:

driver.findElements( By.id("...") ).size() != 0
Run Code Online (Sandbox Code Playgroud)

所以我试过了:

if(driver.findElements(By.id("....")).size() > 0)
    {
        driver.findElement(By.id("....")).click();
        driver.findElement(By.cssSelector("...")).click();
    } 
else
    {
        driver.findElement(By.cssSelector("....")).click();
    }
Run Code Online (Sandbox Code Playgroud)

事实证明这很难看,因为如果我有10个要验证的元素,那么这个IF条件需要写10次.

任何解决方法,使它整洁?

小智 1

解决方案可能有很多,但这可能会阻碍您的架构。

最简单的解决方案可能如下:

只需在某些实用程序类或某个地方创建一个方法optionalClick(),其参数如下:

  1. locator_keyword:{值:id或cssSelector或xpath等}
  2. locator:{值:“q”}

方法步骤:

  1. 根据locator_keywordand获取元素locator
  2. 检查元素是否存在并单击它
  3. 否则什么都不做

此方法可以用作任何类型对象的通用方法。