使用量角器在 Firefox 上设置用户代理并使用 seleniumAddress 不起作用

Setting user agent on firefox with protractor and using seleniumAddress does not work

我想使用 Protractor 和 Firefox 设置特定的用户代理。如果我在 protractor.conf.js 上使用 directConnect,它会起作用:

//selenium-webdriver is installed via npm
var firefox = require('selenium-webdriver/firefox');
var firefoxProfile = new firefox.Profile();
firefoxProfile.setPreference("general.useragent.override", 'monitoring1152936086');

exports.config = {
    directConnect: true,

    capabilities: {
        'browserName': 'firefox',
        'firefox_profile': firefoxProfile
    },
    ...
}

但是,如果我使用 seleniumAddress 而不是 directConnect,它就不起作用。测试确实有效,但未使用用户代理。我需要使用硒服务器。例如:

var firefox = require('selenium-webdriver/firefox');
var firefoxProfile = new firefox.Profile();
firefoxProfile.setPreference("general.useragent.override", 'monitoring1152936086');

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',

    capabilities: {
        'browserName': 'firefox',
        'firefox_profile': firefoxProfile
    },
    ...
}

附带说明一下,我不能使用 chrome,因为我正在尝试使用 Firefox 作为解决量角器和 selenium-docker 与 chrome 不太稳定组合的解决方法(https://github.com/SeleniumHQ/docker-selenium/issues/87).

有什么想法吗?谢谢!

在直接连接的情况下,Protractor 会自行创建浏览器,因此它可以通过浏览器进行全面配置。在远程情况下,Protractor 的控制较少,因为它连接到由 webdriver-manager 启动的 selenium 服务器。通过 firefox 配置文件的正确时间是 webdriver-manager 启动时,但 Protractor 当前不提供此功能。