PHPUnit + Selenium:如何设置 Firefox about:config 选项?

2023-12-03

使用 PHPUnit 和 Firefox 远程运行 Selenium 测试时,onChange 事件不会像用户操作浏览器时那样被触发.

解决这个问题的方法似乎是设置focusmanager.testmode选项true在 Firefox 的偏好设置中(即about:config),如建议的硒错误报告.

然而,所有示例都直接使用 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.testmode to true.

长版

您需要使用您想要设置的首选项创建您自己的迷你 Firefox 配置文件,并在测试开始时将其传递。操作方法如下:

  1. 创建一个新文件夹并将所需的文件放入 Firefox 配置文件中。这可以是任何内容(书签、扩展名、您自己的个人资料的副本等),但我们在这里需要的是一个名为prefs.js它存储我们的about:config设置。

  2. Create prefs.js在此文件夹中包含以下内容:

    user_pref("focusmanager.testmode", true);
    
  3. 压缩文件夹 (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”功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHPUnit + Selenium:如何设置 Firefox about:config 选项? 的相关文章

随机推荐