什么是正确的Selenium语法断言我无法查看特定的链接/元素?

时间:2014-11-06 14:02:04

标签: selenium

我有一个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

我想知道使这个测试通过的正确语法是什么。我已经提到了这些链接assertNotSomethingList of Selenium Methods。但是,这些没有关于它们如何使用的例子,所以我想知道有人会如何编写如上所述的测试。感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

这是一个应该有效的简单布尔检查方法。

boolean checkForElementPresence(By locator)
    {
        try {
            driver.findElement(locator);
            return true;
           } catch (NoSuchElementException e) {
               return false;
          }
      }

答案 1 :(得分:0)

您可以切换到$driver.find_elements,它将返回一个数组而不会引发异常。然后你可以检查数组的大小,以确保它是空的,表明找不到元素。