c# - 如何更改 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);
解决方案
您不能直接更改RemoteWebDriver
. RemoteWebDriver c# 文档。从文档中,您可以看到 RemoteWebDriver 是更具体的实现的抽象,例如FirefoxDriver
和ChromeDriver
。
这些实施暴露了偏好,如user.agent
. api 试图告诉你的是,并非所有人都RemoteWebDrivers
需要有偏好,因此它不是课程的一部分。
但是,您可以执行以下操作,因为FirefoxDriver 扩展了 RemoteWebDriver
RemoteWebDriver driver = new FirefoxDriver(profile);
您可以使用FirefoxProfile
和FirefoxDriver
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;
}
推荐阅读
- flutter - 使用 file.copy(path) 并获取新文件后,我在该位置获取 previos 文件
- python - 无法跟踪 Scrapy 中的链接
- ruby-on-rails - Activerecord 查询忽略我无法删除的范围的顺序
- django - Django-3.12,招摇问题
- html - CSS聊天消息边框半径怎么做?
- pandas - Pandas - 在数据框中的列之间移动数据
- sql - 在 SQL 中实现在过程的时间进出状态的附加列
- angular - 仅在导航到父页面时加载 Angular 路由
- php - 获取按下按钮的车辆的 ID
- python - 如何打印在我的字符串上找到的字符?