我正在使用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方法中起作用吗?