我有一个Selenium测试,应该验证我无法看到按钮链接,除非页面上有一定数量的信息,例如分页链接。这是我的Selenium声明声明:
def test_bottom_links
load_page('orgs/apache_software')
$driver.find_element(:xpath => "//a[@id='btn_orgs_see_all_projects']").element? == false
end
在我看来这对我来说很有意义,但是当我运行测试时我收到了这个错误:
Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"xpath","selector":"//a[@id='btn_orgs_see_all_projects']"}
以上错误是我想要的传递语句。我不希望Selenium找到这个元素,因为它不应该存在。
我也试过这个,我也得到了同样的错误:
$driver.find_element(:xpath => "//a[@id='btn_orgs_see_all_projects']").displayed? == false
我想知道使这个测试通过的正确语法是什么。我已经提到了这些链接assertNotSomething和List of Selenium Methods。但是,这些没有关于它们如何使用的例子,所以我想知道有人会如何编写如上所述的测试。感谢您提供的任何帮助。
答案 0 :(得分:1)
这是一个应该有效的简单布尔检查方法。
boolean checkForElementPresence(By locator)
{
try {
driver.findElement(locator);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
答案 1 :(得分:0)
您可以切换到$driver.find_elements
,它将返回一个数组而不会引发异常。然后你可以检查数组的大小,以确保它是空的,表明找不到元素。