【发布时间】:2019-12-16 16:26:18
【问题描述】:
我需要使用 WebDriver 在 Firefox 中打开“首选项”页面,以便以特定于浏览器的方式清除缓存。
在调查该问题时,我找到了a Python solution,并尝试将其翻译成 Java,但 WebDriver 误解了 uri:
driver.get("about:preferences#privacy");
并发送“/about:preferences#privacy”,而不是 Firefox 不知道如何打开。
我也尝试了 JavaScript 方式:
driver.executeScript("window.location.replace('about:preferences#privacy');")
driver.executeScript("window.open('about:preferences#privacy');")
但是这些只是被浏览器忽略了。
我认为必须有 Java 方式,因为这已经用 Python WebDriver 实现了(请参阅第一个链接)。
更新:结果证明这是一个非 WebDriver 问题。事实上,这源于我们正在使用的测试框架,它是围绕 Selenium 构建的 - Quantum Perfecto。所描述的行为不会发生在纯 Selenium 中。 我向框架支持团队发送了一个请求,以解决他们的代码中的问题。
【问题讨论】:
-
备份一下:为什么你需要这样做? Selenium/webdriver 用于测试页面交互,而不是用于配置浏览器(如果您需要这样做,请为该浏览器创建一个测试配置文件,然后告诉 webdriver 在运行时使用该配置文件而不是默认配置文件)
-
至于为什么:在我们的测试中,我们更喜欢通过浏览器的 gui 以及标准的 javascript 方法(“window.localStorage.clear();”和"window.sessionStorage.clear();") 因为这已被证明是最可靠的方法。
-
你是在告诉我试图让 Selenium 运行 application 而不是 page 交互比仅使用干净的配置文件运行它更有效?因为那是完全错误的。在已知位置有一个配置文件目录,让您的 selenium 跑步者在开始时擦除该目录,并使其在每次运行时都以一个干净的帐户开始。完毕。没有“需要清除缓存”,因为不会有 任何缓存。这基本上是一个XY problem:真正的问题是“我们如何确保 Selenium 会话在没有先前运行的缓存的情况下运行”。
-
你 100% 正确,迈克,但从我的问题下的更新中,你可以看到我被锁定在 Quantum 自动化框架中,无法完全控制驱动程序的创建。我是否提到过,这个问题甚至在纯 Selenium 中都不存在,而是与 Quantum 包装器代码有关。
-
每次实例化 webdriver 时,它都会从包含空缓存和本地存储的新配置文件开始。无论您使用何种框架,都无需“清理”任何内容。
标签: java selenium selenium-firefoxdriver perfecto