繁体   English   中英

Selenium Python Firefox webdriver:无法修改配置文件

[英]Selenium Python Firefox webdriver : can't modify profile

我想在 webdriver Firefox 实例上使用“新选项卡而不是窗口”选项。 1/ 我用这个选项创建了一个配置文件,但是当我使用这个配置文件时,很多选项都可以,但不是这个。 2/ 加载配置文件后,我尝试更改代码中的选项,但不起作用。 我的代码:

profile = webdriver.FirefoxProfile(os.path.join(s_path, name))
profile.set_preference("browser.link.open_newwindow.restriction", 0)
profile.set_preference("browser.link.open_newwindow", 3)
profile.set_preference("browser.link.open_external", 3)
profile.set_preference("browser.startup.homepage","http://www.google.fr")
profile.update_preferences()
print(os.path.join(s_path, name))
driver = webdriver.Firefox(set_profile())

一切正常(起始主页是 google.fr),除了这个选项不正常。

似乎 Selenium 将配置文件复制到临时目录中。 其中 users.js 有错误的行:

user_pref("browser.link.open_newwindow", 2);

Python 3.4.2、Windows 7、Firefox 39.0、Selenium lib 2.46

根据我的研究, browser.link.open_newwindow是一个冻结设置,它总是与值2同步。 如果您挖掘 selenium Python 绑定的来源,您会发现在设置自定义设置后应用的一frozen设置

请注意,在java绑定中,这组默认冻结设置是明确硬编码的:

  /**
   * Profile preferences that are essential to the FirefoxDriver operating correctly. Users are not
   * permitted to override these values.
   */
  private static final ImmutableMap<String, Object> FROZEN_PREFERENCES =
      ImmutableMap.<String, Object>builder()
          .put("app.update.auto", false)
          .put("app.update.enabled", false)
          .put("browser.download.manager.showWhenStarting", false)
          .put("browser.EULA.override", true)
          .put("browser.EULA.3.accepted", true)
          .put("browser.link.open_external", 2)
          .put("browser.link.open_newwindow", 2)  // here it is
          // ...

来自Firefox的一些解释只支持 windows 而不是 tabs

这是一个已知问题,不幸的是,我们将不支持选项卡。

我们强制 Firefox 在新窗口中打开所有链接。 我们无法访问选项卡以了解何时切换。 当我们将来转向 marionette(Mozilla 项目)时,我们应该能够做到这一点,但现在它按预期工作

一种变通的解决方案是手动更改链接的target - 可能无法在所有情况下都起作用,具体取决于新链接的打开方式。

"browser.link.open_newwindow"是一个冻结的首选项,这意味着它不能使用profile.set_preference("browser.link.open_newwindow", 3)

解决方案是使用profile.DEFAULT_PREFERENCES["frozen"]["browser.link.open_newwindow"] = 3代替。 (其他非冻结首选项可以用set_preference设置,没有问题)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM