小编Eve*_*ers的帖子

StaleElementReference错误元素在缓存中找不到

我正在使用带有Ruby 1.9.3的Capybara 2.1使用selenium驱动程序(使用Minitest和测试单元)来测试Web应用程序.

我正在努力解决这个StaleElementReferenceException问题.我已经看过很多关于这个主题的讨论,但我无法找到解决我所面临的问题的方法.

基本上,我试图使用以下代码在我的页面上找到所有分页元素:

pagination_elements = page.all('.pagination a')
Run Code Online (Sandbox Code Playgroud)

然后我在这些元素上做一些断言,比如:

pagination_elements.first.must_have_content('1')
Run Code Online (Sandbox Code Playgroud)

在这些断言之后,我通过单击Next Page链接继续测试,以确保我未来的第一个分页元素将是Previous Page.要做到这一点,我再次检索分页元素:

new_pagination_elements = page.all('.pagination a')
Run Code Online (Sandbox Code Playgroud)

而且Stale Error正在这里发生,因为我已经达到了我已经达到过的元素.(这是错误)

您可以在此处查看链接状态.

我真的不知道如何使这个常见的测试工作正常.你有更好的方法来达到我的分页元素吗?

ruby ruby-on-rails capybara

6
推荐指数
1
解决办法
3019
查看次数

水豚测试后 Chrome 驱动程序不会退出

selenium webdriver默认情况下,我使用 capybara 2.1.0minitesttest::unit,对于一些需要访问该.hover方法的测试,我使用的是 Chrome webdriver

在几乎每个需要 chrome 的测试结束时,我都有一个空白的 chrome 窗口,我必须手动关闭才能结束我的测试。

这是我的测试助手的一部分:

def use_chrome_driver
  Capybara.register_driver :selenium_chrome do |app|
    Capybara::Selenium::Driver.new(app, :browser => :chrome)
  end
  Capybara.current_driver = :selenium_chrome
end

def setup
  DatabaseCleaner.start
  Capybara.current_driver = :selenium
end

def teardown
  Capybara.reset_session!
  Capybara.use_default_driver
  DatabaseCleaner.clean
end
Run Code Online (Sandbox Code Playgroud)

setup 方法use_chrome_driver在 chrome 测试开始时被调用覆盖。IE :

def test_example
  use_chrome_driver
  ...
end
Run Code Online (Sandbox Code Playgroud)

test_example如果我不手动关闭打开的 Chrome 浏览器,这将永远不会退出。当我手动退出他时,测试完成并通过,没有错误。

那么为什么这个 Chrome 浏览器窗口不会每次都自动关闭呢?(有时它会自动关闭 ~15%!)

selenium google-chrome capybara

6
推荐指数
1
解决办法
1909
查看次数

标签 统计

capybara ×2

google-chrome ×1

ruby ×1

ruby-on-rails ×1

selenium ×1