【问题标题】:How to open "about:preferences" in Firefox using java WebDriver如何使用 java WebDriver 在 Firefox 中打开“about:preferences”
【发布时间】: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


【解决方案1】:

Custom Firefox Profile for Selenium简介

你会像这样使用它:

ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("<your-profile-name>");
WebDriver driver = new FirefoxDriver(myprofile);

正如Mike 'Pomax' Kamermans 所说,最好是根据您的要求创建配置文件。

如果您需要以编程方式创建环境,请使用配置管理(如 Puppet/Chef/Ansible),甚至使用maven 生成多个environment.properties,您可以使用自定义脚本来配置(或创建从头开始)一个 Firefox 配置文件,在this thread 中得到了回答

【讨论】:

    【解决方案2】:

    您可以使用 driver.navigate().to(); 导航到“about:preferences#privacy”;

    在 FF-68、Selenium 4.0.0-alpha-2(Java 绑定)上测试

    driver.navigate().to("about:preferences#privacy");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-25
      • 2017-08-24
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 2016-07-18
      • 2017-10-23
      • 1970-01-01
      相关资源
      最近更新 更多