,但仍然无法理解该常量的确切位置以及如何执行所需的操作。
如果唯一的选择是调用js执行,那么我可以接受,但是这个常量的存在使我在寻找更好的解决方案。
#1 楼
如果您的驱动程序实现了WebStorage
,则可以调用driver.getSessionStorage().clear();
driver.getLocalStorage().clear();
,以确保驱动程序确实实现了
WebStorage
的习惯用法是if (driver instanceof WebStorage) {
WebStorage webStorage = (WebStorage)driver;
webStorage.getSessionStorage().clear();
webStorage.getLocalStorage().clear();
}
或更好的
if (!(driver instanceof WebStorage)) {
throw new IllegalArgumentException("This test expects the driver to implement WebStorage");
}
WebStorage webStorage = (WebStorage)driver;
webStorage.getSessionStorage().clear();
webStorage.getLocalStorage().clear();
#2 楼
Peter Masiar给出的答案不再起作用。此答案将导致以下异常:追溯(最近一次通话最后一次):
文件“”,第1行,在
文件“ / Library / Frameworks / Python.framework / Versions / 3.5 / lib / python3.5 / site-packages / selenium / webdriver / remote / webdriver.py“,第245行,位于get
self.execute(Command.GET,{' url':url})
文件“ /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py”,第233行,在执行
self.error_handler.check_response(响应)
文件“ /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler。 py”,第194行,在check_response
中引发exception_class(消息,屏幕,堆栈跟踪)
(会话信息:chrome = 51.0.2704.103)
(驱动程序信息:chromedriver = 2.21.371459(36d3d07f660ff2bc1bf28a75d1cdabe d0983e7c4),platform = Mac OS X 10.11.3 x86_64)
为了清除
localStorage
,应使用execute_script()
中的WebDriver
方法。WebDriver.execute_script('window.localStorage.clear();')
#3 楼
将页面driver.get(URL)
移至页面后,您可以通过webdriver在其中执行javascript,就像这样driver.get('javascript:<your JS snippet here>')
,因此请尝试
driver.get('javascript:localStorage.clear();')
#4 楼
在C#中,当前的实现方式是:if (driver.HasWebStorage) {
driver.WebStorage.LocalStorage.Clear();
}
else {
// you're out of luck...
}
评论
为什么感觉需要清除LocalStorage? Selenium将为您提供浏览器的新实例,而该实例在商店或任何地方都没有任何内容。是业务需求还是您的直觉?@PeterMasiar-据我所知不是真的-您是否100%确定已清除localStorage?
如果获得浏览器的新实例,则它应该获得新的本地存储IIUC。没有缓存。直到最近,花了40秒钟构建了新的Firefox实例。我尚未检查localStore。
@PeterMasiar谢谢,这实际上非常重要,应仔细检查。
通过测试Firefox和Chrome驱动程序,我已经确认,在实例化该驱动程序时,浏览器的localStorage为空。即使同一浏览器的另一个实例已经在另一个窗口中打开,也是如此。我的环境是Ubuntu 14.04,Python 2.7.6,Selenium 2.44.0。