使用 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 配置文件,并在测试开始时将其传递。操作方法如下:
创建一个新文件夹并将所需的文件放入 Firefox 配置文件中。这可以是任何内容(书签、扩展名、您自己的个人资料的副本等),但我们在这里需要的是一个名为prefs.js
它存储我们的about:config
设置。
-
Create 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”功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)