gpt4 book ai didi

firefox - PHPUnit + Selenium : How to set Firefox about:config options?

转载 作者:行者123 更新时间:2023-12-03 20:21:48 25 4
gpt4 key购买 nike

使用 PHPUnit 和 Firefox 远程运行 Selenium 测试时,onChange 事件 are not fired as they are when a user is operating the browser .

解决这个问题的方法似乎是设置 focusmanager.testmode选项 true在 Firefox 的首选项(即 about:config )中,如 Selenium bug report 中所建议的.

然而,所有示例都直接使用 Selenium,而我使用的是 PHPUnit,它有自己的 API 隐藏了 Selenium 内部。我不知道如何使用 PHPUnit 设置这个 Firefox 选项,所以我希望其他人可以告诉我如何做到这一点!

(不,我不能进入 about:config 并自己手动设置它,因为每次运行测试时测试都会创建一个新的干净的浏览器配置文件,因此任何手动配置更改都会丢失。)

最佳答案

感谢 Selenium 开发人员,我有一个解决方案!

精简版

将其放入您的测试中,以便在 setUp() 中调用它功能:

// Firefox mini-profile that sets focusmanager.testmode=true in about:config
define('FIREFOX_PROFILE',
'UEsDBAoAAAAAADqAxkSBK46tKgAAACoAAAAIABwAcHJlZnMuanNVVAkAA1BZkVM6WZFTdXgLAAEE
6AMAAARkAAAAdXNlcl9wcmVmKCJmb2N1c21hbmFnZXIudGVzdG1vZGUiLCB0cnVlKTsKUEsBAh4D
CgAAAAAAOoDGRIErjq0qAAAAKgAAAAgAGAAAAAAAAQAAAKSBAAAAAHByZWZzLmpzVVQFAANQWZFT
dXgLAAEE6AMAAARkAAAAUEsFBgAAAAABAAEATgAAAGwAAAAAAA==');

protected function setUp()
{
$this->setDesiredCapabilities(Array('firefox_profile' => FIREFOX_PROFILE));
}

本套 focusmanager.testmodetrue .

长版

您需要使用您想要设置的首选项创建自己的迷你 Firefox 配置文件,并在测试开始时传递它。这是如何做到的:
  • 创建一个新文件夹并将所需的文件放入 Firefox 配置文件中。这可以是任何东西(书签、扩展名、您自己的个人资料的副本等),但我们在这里只需要一个名为 prefs.js 的文件。存储我们的 about:config设置。
  • 创建 prefs.js在此文件夹中具有以下内容:
    user_pref("focusmanager.testmode", true);
  • 压缩文件夹( prefs.js 应该在存档的根目录中),并对其进行 base64 编码。

  • 如果您使用的是 Linux,您可以这样做:
    mkdir firefox-profile
    cd firefox-profile
    echo 'user_pref("focusmanager.testmode", true);' >> prefs.js
    zip -r ../firefox-profile.zip *
    base64 < ../firefox-profile.zip

    然后根据上面的简短版本获取 base64 值并将其设置为“firefox_profile”功能。

    关于firefox - PHPUnit + Selenium : How to set Firefox about:config options?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24031961/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com