小编ren*_*dxh的帖子

无法在Capybara测试的拆卸方法中执行localStorage.clear

我正在使用Capybara测试使用HTML5本地存储在客户端上保留数据值的应用程序的前端部分。为了确保来自一个测试的会话数据不会干扰另一个测试,我确保调用每个测试Capybara.reset_sessions!teardown方法。

我很快意识到该方法实际上并不会清除本地存储,建议您确保window.localStorage.clear()在每次测试后手动执行该teardown方法,因此我将这行代码放入测试类的方法中,如下所示:

  def teardown
    super
    page.execute_script("localStorage.clear()")
  end
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行它时:

  1) Error:
CartTest#test_adding_an_item_to_cart:
Selenium::WebDriver::Error::NoScriptResultError: <unknown>: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
  (Session info: chrome=34.0.1847.116)
  (Driver info: chromedriver=2.8.240825,platform=Linux 3.8.0-29-generic x86_64)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,相反,我尝试将JavaScript调用移至测试的结尾,如下所示:

  test "test with storage" do
    # Test some browser stuff
    page.execute_script("localStorage.clear()")
  end
Run Code Online (Sandbox Code Playgroud)

工作正常。现在,我当然可以在每项测试的末尾添加该行,以使其正常运行,但是那会很混乱。有人知道如何使其在tearndown方法中起作用吗?

javascript ruby-on-rails testunit local-storage capybara

5
推荐指数
1
解决办法
2033
查看次数