Selenium webdriver ruby version 如何断言 webelement 不存在?

Selenium webdriver ruby version how to assert a webelement is not present?

我是否可以使用 selenium webdriver in ruby 来验证元素是否不存在?

如果我这样做

webdriver.find_element(:xpath, element)

但是如果元素不是,它会抛出一个错误present.I需要确保元素不存在而不抛出错误。

我的意思是,有没有像assert_notassert_element_not_present这样的方法?

您可以使用 find_elements 并进行计数。 find_element 方法将 return NoSuchElement(或类似),因为未找到该元素并且这是一个合法的异常。因此,测试不会到达断言。另一方面,如果 none 找到,计数 find_elements 将 return 0,这是最简单的检查方法。抱歉,我不太了解 Ruby。但是等价的 C# 看起来像下面这样

IList<IWebElement> elements = driver.FindElements(By.XPath("Your Xpath "));
Assert.IsTrue(elements.Count != 0);

在 Ruby 中,您可以通过两种方式执行此操作。一种是遵循@Saifur 的解决方案,它看起来像这样:

# Returns true if no element is found
#
webdriver.find_elements(:xpath, element).empty?

另一种方法是拯救异常:

# Returns false if no element is found
#
webdriver.find_element(:xpath, element) rescue false

我建议 Saifur 的解决方案。