Настройка языка для Remotewebdriver - конечная точка BrowserStack - PullRequest
0 голосов
/ 13 июня 2019

Я хочу запустить свои тесты на селен на другом языке браузера. Я попробовал два SO ответа и даже поддержку BrowserStack безуспешно.

Я надеялся, что это будет быстрое и простое исправление, но то, что выглядит как простой код, терпит неудачу так, как я не понимаю. Может ли кто-нибудь предоставить рабочий фрагмент кода или хорошую идею, где этот код работает неправильно?

[Этот ответ] Как установить язык браузера с помощью RemoteWebDriver и [этот ответ] Как установить язык браузера в возможностях удаленного веб-драйвера selenium оба были опробованы в следующем коде:


            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)

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Поддержка BrowserStack любезно предоставила два рабочих примера:

        {
            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();
0 голосов
/ 13 июня 2019

Из фрагмента кода, я вижу, вы указали опции браузера для Chrome и Firefox в одном и том же скрипте.Вам понадобится отдельный тестовый скрипт для Chrome и Firefox.

-Для создания сеанса в браузере Chrome включите следующие возможности

DesiredCapabilities capability;

ChromeOptions options = new ChromeOptions();
// Set browser language to French 
options.AddArguments("--lang=fr");
capability = (DesiredCapabilities)options.ToCapabilities();

capability.SetCapability("browser", "chrome");
capability.SetCapability("browser_version", "61");
capability.SetCapability("os", "Windows");
capability.SetCapability("os_version", "7");
capability.SetCapability("browserstack.user", "USERNAME");// add username
capability.SetCapability("browserstack.key", "ACCESS_KEY"); //add automate-key

driver = new ScreenShotRemoteWebDriver(new Uri("http://hub-cloud.browserstack.com/wd/hub/"), capability);

-Для создания сеанса в браузере Firefox включите следующие возможности

DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability("browser", "Firefox");
capability.SetCapability("browser_version", "63.0");
capability.SetCapability("os", "Windows");
capability.SetCapability("os_version", "10");
capability.SetCapability("browserstack.user", "your_usernmae");
capability.SetCapability("browserstack.key","your_access_key");

FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.SetPreference("intl.accept_languages", "fr");
capability.SetCapability(FirefoxDriver.ProfileCapabilityName, firefoxProfile.ToBase64String());

Для получения дополнительной информации о передаче параметров браузера с использованием C # см. - https://www.browserstack.com/automate/c-sharp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...