2014-08-31 50 views
0

使用PhantomJsDriver(GhostDriver)來測試我的Web應用程序。 嘗試訪問使用像調用本地存儲的值:PhantomJSDriver(GhostDriver)無法使用javascript獲取localStorage值

(String) js.executeScript(String.format("return localStorage.getItem('%s');", key)); 

在初始化的webdriver我設置的能力:

DesiredCapabilities dCaps = new DesiredCapabilities() 
dCaps.setJavascriptEnabled(true) 
dCaps.setCapability("webStorageEnabled", true) 
return new PhantomJSDriver(dCaps) 

接收WebDriverException試圖執行上面的JS,從它看起來像webStorageEnabled已從未設置爲true:

org.openqa.selenium.WebDriverException:{ 「的errorMessage」:「SECURITY_ERR:請求「:{」headers「:{」Accept「:」application/json, image/png「,」Connection「:」Keep-Alive「,」Content-Length「:」98「 , 「內容類型」:「應用/ JSON; charset = utf-8「,」Host「:」localhost:20884「},」httpVersion「:」1.1「,」method「:」POST「,」post「:」{\「args \」:[], \「script \」:\「return localStorage.getItem('cartId_136d7735-13d7-8178-8abf-010beb62f8cf'); \」}「,」url「:」/ execute「,」urlParsed「:{」anchor「: 「」, 「查詢」: 「」, 「文件」: 「執行」, 「目錄」: 「/」, 「路徑」: 「/運行」, 「相對」: 「/運行」, 「口」: 「」 , 「宿主」: 「」, 「密碼」: 「」, 「用戶」: 「」, 「用戶信息」: 「」, 「權威」: 「」, 「協議」: 「」, 「源」:「/執行「,」queryKey「:{},」chunks「:[」execute「]},」urlOriginal「:」/ session/5f67ce30-310a-11e4-83c7-6d52cfce6b64/execute「}} 命令持續時間或超時時間:8毫秒構建信息:版本: '2.39.0',修訂版: '14fa800511cc5d66d426e08b0b2ab926c7ed7398',時間: '2013年12月16日13時18分38秒'

驅動程序信息:org.openqa.selen ium.phantomjs.PhantomJSDriver 能力[{平臺= MAC,acceptSslCerts =假, javascriptEnabled =真,browserName = phantomjs,可旋轉=假, driverVersion = 1.1.0,locationContextEnabled =假,版本1.9.7 =, cssSelectorsEnabled =真,databaseEnabled =假,handlesAlerts =假, browserConnectionEnabled =假,webStorageEnabled =假, nativeEvents =真,代理= {的proxyType =直接}, applicationCacheEnabled =假,DRIVERNAME = ghostdriver, takesScreenshot = FALSE}]在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newIns ,孟清湘(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

可能是什麼我遇到的問題的原因?應該可以爲PhantomJSDriver設置webStorageEnabled嗎?如果不是,我該如何解決這個問題?

回答

0

經過一番思考我設法解決這個問題。

通常,可以使用JavaScript訪問localStorage。這裏描述的問題是由於其他原因而發生的。 這裏是流我:做driver.get(url)

的問題是,driver.get(url)訪問的localStorage之前必須發生

1)初始化的webdriver
2)訪問localStorage的
3)。這解決了這個問題。

這裏是我的localStorage的驅動程序實現(在斯卡拉),如果你需要一個:LocalStorageDriver