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

| 在Selenium 2中,我要确保驱动程序已加载的页面上的元素不存在。我在这里包括我的幼稚实现。
    WebElement deleteLink = null;
    try {
        deleteLink = driver.findElement(By.className(\"commentEdit\"));
    } catch (NoSuchElementException e) {

    }
    assertTrue(deleteLink != null);
有没有一种更优雅的方法可以从根本上验证断言是否引发了NoSuchElementException?     
已邀请:
        如果您正在使用junit进行测试,而这只是您要进行的测试,则可以使测试期望使用异常
@Test (expected=NoSuchElementException.class)
public void someTest() {
    driver.findElement(By.className(\"commentEdit\"));
}
或者,您可以使用
findElements
方法,该方法返回一个元素列表或一个空列表(如果找不到)(不抛出
NoSuchElementException
):
...
List<WebElement> deleteLinks = driver.findElements(By.className(\"commentEdit\"));
assertTrue(deleteLinks.isEmpty());
...
要么
....
assertTrue(driver.findElements(By.className(\"commentEdit\")).isEmpty());
....
    
        您可以使用此:
Boolean exist = driver.findElements(By.whatever(whatever)).size() == 0;
如果不存在,将返回true。     
        我拆分了页面类,因此不必多次定义元素。我的nunit和mbunit测试类称为那些页面类。我还没有尝试过,但这就是我正在考虑的方式,因此我可以像使用WatiN一样使用.exists()。 扩展类别:
public static class ExtensionMethods
{
   public static IWebElement ElementById(this IWebDriver driver, string id)
   {
      IWebElement e = null;
      try 
      {
         e = driver.FindElement(By.Id(id));
      }
      catch (NoSuchElement){}
      return e;
   }
   public static bool Exists(this IWebElement e) 
   {
      if (e == null)
         return false;  
      return true;
   }
}
页面类别:
public IWebElement SaveButton { get { try { return driver.ElementById(\"ctl00_m_m_body_body_cp2_btnSave\")); } }
测试类别:
MyPageClass myPageClass = new MyPageClass(driver);
if (myPageClass.SaveButton.Exists())
{
   Console.WriteLine(\"element doesn\'t exist\");
}
    
        您可以使用driver.findElements(\“您的元素\”)检索元素列表,然后搜索该元素。如果列表中不包含该元素,则您将获得所需的行为:)     
        如果您使用的是Javascript API,则可以使用ѭ10。此方法将返回一个Promise,其中包含找到的元素的数组。您可以检查数组的长度,以确保未找到任何项目。
driver.findElements(By.css(\'.selector\')).then(function(elements) {
  expect(elements.length).to.equal(0)
})
我在Promise的回调中使用Chai断言库来期望某个值。 参考:https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_WebElement.html     
        使用assertFalse :)
assertFalse(isElementPresent(By.className(\"commentEdit\")));
    

要回复问题请先登录注册