2013-10-28 35 views
4

试图为黄瓜测试禁用或删除本地存储。黄瓜:使用Poltergeist(PhantomJS)禁用或删除本地存储

我曾尝试以下:

page.driver.execute_script("localStorage.clear()") 

,但我收到以下错误

One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details). 

    SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent. 
    at phantomjs://webpage.evaluate():1 
    at phantomjs://webpage.evaluate():1 
    at phantomjs://webpage.evaluate():1 
    at phantomjs://webpage.evaluate():1 (Capybara::Poltergeist::JavascriptError) 
+0

仅供参考这里的水豚,WebKit的票证贾斯汀开:https://github.com/thoughtbot/capybara -webkit /问题/ 582 – steakchaser

回答

0

我做的是这样的:

visit '<the_url_needed>' 
    page.execute_script('if (localStorage && localStorage.clear) localStorage.clear()') 

希望有所帮助。

1

我得到了同样的错误。问题在于我试图在不访问页面的情况下执行脚本。这引发错误由贾斯汀上面解释:

shared_context '@user is logged in' do 
    before do 
    # visit '/' 
    credentials = @user.create_new_auth_token 
    token = credentials['access-token'] 
    page.execute_script "localStorage.setItem('token', '#{token}')" 
    end 
end 

这工作:

shared_context '@user is logged in' do 
    before do 
    visit '/' 
    credentials = @user.create_new_auth_token 
    token = credentials['access-token'] 
    page.execute_script "localStorage.setItem('token', '#{token}')" 
    end 
end