Selenium webdriver ruby​​版本如何断言webelement不存在?

时间:2015-04-24 11:34:43

标签: ruby-on-rails ruby selenium selenium-webdriver webdriver

无论如何,我可以使用ruby中的 selenium webdriver 来验证元素是否不存在吗?

如果我这样做

webdriver.find_element(:xpath, element)

但如果元素不存在则抛出错误。我需要确保元素不存在而不会抛出错误。

我的意思是,是否有类似assert_notassert_element_not_present的方法?

2 个答案:

答案 0 :(得分:4)

你可以在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的解决方案。

答案 1 :(得分:1)

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

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