首页 > 解决方案 > 如何更改 selenium 远程 Web 驱动程序中的用户代理

问题描述

我将使用 selenium 远程 Web 驱动程序来测试我的 Web 应用程序。在我的情况下,我应该使用 firefox 网络驱动程序。现在我不知道在这种情况下如何更改我的用户代理

这是我使用远程网络驱动程序的代码

DesiredCapabilities Capabilities = new DesiredCapabilities();
Capabilities.SetCapability(CapabilityType.BrowserName, "firefox");                
string GridURL = "http://localhost:4545/wd/hub";
driver = new RemoteWebDriver(new Uri(GridURL), Capabilities);

标签: c#asp.netselenium-gridselenium-remotedriver

解决方案


您不能直接更改RemoteWebDriver. RemoteWebDriver c# 文档。从文档中,您可以看到 RemoteWebDriver 是更具体的实现的抽象,例如FirefoxDriverChromeDriver

这些实施暴露了偏好,如user.agent. api 试图告诉你的是,并非所有人都RemoteWebDrivers需要有偏好,因此它不是课程的一部分。

但是,您可以执行以下操作,因为FirefoxDriver 扩展了 RemoteWebDriver

RemoteWebDriver driver = new FirefoxDriver(profile);

您可以使用FirefoxProfileFirefoxDriver

FirefoxProfile profile = new FirefoxProfile();
profile.SetPreference("general.useragent.override", "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25");
IWebDriver driver = new FirefoxDriver(profile);

一个完整的例子

public static IWebDriver GetDriver(string driver, Devices device)
 {
     DeviceModel model = Device.Get(device);
     IWebDriver webDriver;
     switch (driver.ToLower())
     {
         case "safari":
             webDriver = new SafariDriver();
             break;
         case "chrome":
             webDriver = new ChromeDriver();
             break;
         case "ie":
             webDriver = new InternetExplorerDriver();
             break;
         //case "firefox":
         default:
             var profile = new FirefoxProfile();
             profile.SetPreference("general.useragent.override", model.UserAgent);
             webDriver = new FirefoxDriver(profile);
             webDriver.Manage().Window.Size = model.ScreenSize;
             break;
     }
     return webDriver;
 }

推荐阅读