使用PhantomJsDriver(GhostDriver)测试我的Web应用程序。 尝试使用以下调用访问本地存储值:
(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)
在尝试执行上面的JS时接收WebDriverException,看起来webStorageEnabled
从未设置为true:
org.openqa.selenium.WebDriverException:{“errorMessage”:“SECURITY_ERR: DOM Exception 18“,”request“:{”headers“:{”Accept“:”application / json, 图像/ PNG“‘连接’:‘保持活动’,‘内容长度’:‘98’,‘内容类型’:”应用/ JSON; 字符集= UTF-8" , “主机”: “本地主机:20884”}, “httpVersion”: “1.1”, “方法”: “POST”, “后”: “{\” ARGS \“:[],\ “脚本\”:\“返回 localStorage.getItem( 'cartId_136d7735-13d7-8178-8abf-010beb62f8cf'); \ “}”, “URL”: “/执行”, “urlParsed”:{ “锚”: “”, “查询”: “”, “文件”: “执行”, “目录”: “/”, “路径”: “/运行”, “相对”: “/运行”, “口”: “”, “主人”: “”,“密码“:” “ ”用户“: ”“, ”用户信息“: ”“, ”权威“: ”“, ”协议“: ”“, ”源“: ”/执行“, ”queryKey“:{},”块 “:[” 执行 “]}”,urlOriginal “:”/会话/ 5f67ce30-310a-11e4-83c7-6d52cfce6b64 /执行“}} 命令持续时间或超时:8毫秒构建信息:版本: '2.39.0',修订版:'14fa800511cc5d66d426e08b0b2ab926c7ed7398',时间: '2013-12-16 13:18:38'
驱动程序信息:org.openqa.selenium.phantomjs.PhantomJSDriver 功能[{platform = MAC,acceptSslCerts = false, javascriptEnabled = true,browserName = phantomjs,rotate = false, driverVersion = 1.1.0,locationContextEnabled = false,version = 1.9.7, cssSelectorsEnabled = true,databaseEnabled = false,handlesAlerts = false, browserConnectionEnabled = false, webStorageEnabled = false , nativeEvents = true,proxy = {proxyType = direct}, applicationCacheEnabled = false,driverName = ghostdriver, takeScreenshot = false}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
我遇到的问题可能是什么原因?是否可以为PhantomJSDriver设置webStorageEnabled?如果不是,我该如何解决这个问题?
答案 0 :(得分:0)
看起来它还没有实现:
答案 1 :(得分:0)
经过一番思考后,我设法解决了这个问题。
通常,可以使用JavaScript访问localStorage。这里描述的问题是因为其他原因而发生的。 这是我的流程:
1)初始化WebDriver
2)访问localStorage
3)做driver.get(url)
问题是,driver.get(url)
必须在访问localStorage之前发生。这解决了这个问题。
这是我的LocalStorage驱动程序实现(在Scala中),如果您需要:LocalStorageDriver