Selenium Grid 2 - 远程webdriver未在FireFox中设置用户代理首选项

时间:2013-01-07 21:28:08

标签: c# firefox selenium preference

我在Windows机器上使用selenium server 2.28。我已经设置了集线器和节点。我正在使用.net来编写我的测试用例。我使用以下代码来更改用户代理(到iPhone)使用自定义FireFox(17.0.1)配置文件。

FirefoxProfileManager profileManager = new FirefoxProfileManager();
FirefoxProfile profile = profileManager.GetProfile(FireFox_Profile_Name);
profile.SetPreference("general.useragent.override", _sUserAgent);
DesiredCapabilities capability = DesiredCapabilities.Firefox();
capability.SetCapability(FirefoxDriver.ProfileCapabilityName, profile);

我正在实例化RemoteWebDriver这样的实例:

driver = new RemoteWebDriver(new Uri("hub_uri"), capability);

当我在节点机器上检查firefox实例中的about:config时,我根本看不到general.useragent.override首选项。如果我使用:

driver = new FirefoxDriver(profile); 

正确设置首选项。我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

我正在尝试做一些非常相似的事情(将Firefox设置为使用Windows身份验证)。

在我的(有限的)实验中,使用profile只使用profile.ToBase64String()将与本地驱动程序实例一起使用,但在与Selenium Server交谈时则不行。我可以使用{{1}}向here提示将配置文件传递给Selenium Server。

答案 1 :(得分:0)

以下是如何使用Python在Grid 2中传递用户代理。如果您不想要代理,请将其删除。

    myProxy = IP:PORT
    proxy = Proxy({
        'proxyType': ProxyType.MANUAL,
        'httpProxy': myProxy,
        'ftpProxy': myProxy,
        'sslProxy': myProxy,
        'noProxy': '' # set this value as desired
        })

    desired_capabilities = webdriver.DesiredCapabilities.FIREFOX.copy()   
    browser_profile = webdriver.FirefoxProfile()          
    browser_profile.set_preference("general.useragent.override", 'USERAGENT' )           
    desired_capabilities["firefox_profile"] = browser_profile.update_preferences() 
    driver = webdriver.Remote(   command_executor='http://IPADDRESS:4444/wd/hub',desired_capabilities=desired_capabilities, browser_profile=browser_profile, proxy = proxy) 

希望有所帮助