c# - 为 Remotewebdriver 设置语言 - BrowserStack 端点
问题描述
我希望以不同的浏览器语言运行我的 selenium 测试。我已经尝试了两个 SO 答案,甚至 BrowserStack 支持都没有成功。
我曾希望这将是一个快速简单的解决方案,但是看起来简单的代码以我不理解的方式失败了。任何人都可以提供一个有效的代码片段,或者一个好主意这个出错的地方吗?
[这个答案] How to set Browser Language using RemoteWebDriver和 [这个答案] How to set browser language in selenium remote webdriver features都在以下代码中进行了尝试:
DesiredCapabilities DesCaps = new DesiredCapabilities();
DesCaps.SetCapability("browserstack.user", "your_user");
DesCaps.SetCapability("browserstack.key", "your_key");
FirefoxProfile fp = new FirefoxProfile();
fp.SetPreference("intl.accept_languages", "en-US");
DesCaps.SetCapability(FirefoxDriver.ProfileCapabilityName, fp);
ChromeOptions options = new ChromeOptions();
options.AddArguments("--lang=en-DE");
DesCaps.SetCapability(ChromeOptions.Capability, options);
RemoteWebDriver driver = new RemoteWebDriver(new Uri("http://hub-cloud.browserstack.com/wd/hub/"), DesCaps, TimeSpan.FromSeconds(500));
driver.Navigate().GoToUrl("http://google.com");
Console.WriteLine("Completed!");
Console.ReadKey();
当我尝试启动驱动程序时收到异常:
OpenQA.Selenium.WebDriverException
HResult=0x80131500
Message=The property '#/' contains additional properties ["BinaryLocation", "LeaveBrowserRunning", "Arguments", "Extensions", "DebuggerAddress", "MinidumpPath", "PerformanceLoggingPreferences", "UseSpecCompliantProtocol", "BrowserName", "BrowserVersion", "PlatformName", "AcceptInsecureCertificates", "UnhandledPromptBehavior", "PageLoadStrategy", "Proxy"] outside of the schema when none are allowed in chromeOptions
Source=WebDriver
StackTrace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(Uri remoteAddress, ICapabilities desiredCapabilities, TimeSpan commandTimeout)
解决方案
BrowserStack Support 提供了两个工作示例:
{
IWebDriver driver;
FirefoxOptions options = new FirefoxOptions();
options.AddAdditionalCapability("browser", "firefox", true);
options.AddAdditionalCapability("os", "Windows", true);
options.AddAdditionalCapability("os_version", "10", true);
options.AddAdditionalCapability("browser_version", "63.0", true);
options.AddAdditionalCapability("build", "BuildName", true);
options.SetPreference("intl.accept_languages", "de");
driver = new RemoteWebDriver(new Uri("http://your_username:your_access_key@hub-cloud.browserstack.com/wd/hub/"),
options.ToCapabilities());
driver.Navigate().GoToUrl("http://www.google.com");
Console.WriteLine(driver.Title);
IWebElement query = driver.FindElement(By.Name("q"));
query.SendKeys("Browserstack");
query.Submit();
Console.WriteLine(driver.Title);
Thread.Sleep(2000);
driver.Navigate().GoToUrl("http://www.amazon.in");
Console.WriteLine(driver.Title);
driver.Quit();
}
}
在 Chrome 中:
IWebDriver driver;
ChromeOptions options = new ChromeOptions();
options.AddAdditionalCapability("browser", "chrome", true);
options.AddAdditionalCapability("os", "Windows", true);
options.AddAdditionalCapability("os_version", "10", true);
options.AddAdditionalCapability("browser_version", "69.0", true);
options.AddAdditionalCapability("build", "BuildName", true);
options.AddArgument("--lang=de");
driver = new RemoteWebDriver(new Uri("http://your_username:your_access_key@hub-cloud.browserstack.com/wd/hub/"),
options.ToCapabilities());
driver.Navigate().GoToUrl("http://www.google.com");
Console.WriteLine(driver.Title);
IWebElement query = driver.FindElement(By.Name("q"));
query.SendKeys("Browserstack");
query.Submit();
Console.WriteLine(driver.Title);
Thread.Sleep(2000);
driver.Navigate().GoToUrl("http://www.amazon.in");
Console.WriteLine(driver.Title);
driver.Quit();
推荐阅读
- emacs - 如何在 spacemacs 中设置 lsp-ui-doc 的位置
- php - 使用具有多个订阅的 Laravel Cashier
- c# - 为什么在这个简单示例中,随着 MaxDegreeOfParallelism 的增加,每个内核的 CPU 使用率会降低?
- mysql - 如何编写一个在sql中连接同一个表并将一个表的列值与另一个表中的同一列进行比较的查询
- excel - Excel 返回错误响应
- javascript - 未声明上下文错误使用上下文挂钩与 next.js 反应
- gradle - 每次运行构建时如何阻止gradle重新下载
- javascript - Puppeteer 不评估 heroku 上的网络应用程序
- html - 如何使用 Notepad++ 中的正则表达式从多个页面中删除 HTML 代码
- django - Django: as_view: cls 和 initkwargs 如何传递给视图函数