如何验证Selenium 2中不存在元素

Han*_*Han 15 selenium selenium-webdriver

在Selenium 2中,我想确保驱动程序加载的页面上的元素不存在.我在这里包括了我天真的实现.

    WebElement deleteLink = null;
    try {
        deleteLink = driver.findElement(By.className("commentEdit"));
    } catch (NoSuchElementException e) {

    }
    assertTrue(deleteLink != null);
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的方式基本上验证断言NoSuchElementException被抛出?

Tne*_*nem 32

如果您正在使用junit进行测试,并且这是您测试的唯一内容,则可以使测试期望使用例外

@Test (expected=NoSuchElementException.class)
public void someTest() {
    driver.findElement(By.className("commentEdit"));
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用findElements返回元素列表的方法,如果没有找到,则可以使用空列表(不抛出NoSuchElementException):

...
List<WebElement> deleteLinks = driver.findElements(By.className("commentEdit"));
assertTrue(deleteLinks.isEmpty());
...
Run Code Online (Sandbox Code Playgroud)

要么

....
assertTrue(driver.findElements(By.className("commentEdit")).isEmpty());
....
Run Code Online (Sandbox Code Playgroud)


小智 6

你可以用这个:

Boolean exist = driver.findElements(By.whatever(whatever)).size() == 0;
Run Code Online (Sandbox Code Playgroud)

如果不存在则返回true.