Часто задаваемые вопросы про Selenium на c# с примерами

Selenium это набор инструментов, которые используются для автоматизации работы браузера. Существуют реализации управления «селениумом» для таких популярных языков, как: C#, PHP и Java.

Как внедрить Selenium в проект Visual Studio?

Прежде всего, необходимо установить пакеты Selenium.Webdriver в проект. При помощи пакетного менеджера NuGet программист может установить их прямо из окна проекта.

nuget

  1. Перейдите в Tools/NuGet Package Manager/Manage NuGet Packages for Solution…/ в Visual Studio
  2. Во вкладке «NuGet — Solution» перейдите в Browse
  3. В поисковой строке наберите название пакета — Selenium.Webdriver
  4. Выберите пакет и нажмите установить

Потом необходимо скачать драйверы, которые подходят к выбранным для тестирования браузерам и ОС компьютера:

  1. Обновите выбранные браузеры
  2. Скачайте подходящие драйвера
  3. Расположите скачанный драйвер(ы) (.exe) в директорию приложения (к примеру, …/bin/debug/)

И последний штрих: добавление using директив к пространствам имён Selenium:

...
   using OpenQA.Selenium;
   using OpenQA.Selenium.Chrome;
   using OpenQA.Selenium.Firefox;
...

Примечание: Webdriver не заработает с Firefox браузером, если не установлен Firefox: Developer Edition.

Как создать экземпляр класса веб-драйвера на c#?

Существуют классы веб-драйверов для соответствующих браузеров

  • ChromeDriver
  • FirefoxDriver
  • and so on

Каждый из них наследует интерфейс IWebDriver. Экземпляр класса веб-драйвера можно создать конструктором без параметров (у которого есть перегрузки)

...
   FirefoxDriver firefox = new FirefoxDriver();
   ChromeDriver chrome = new ChromeDriver();
   List<IWebDriver> drivers = new List<IWebDriver>() { firefox, chrome };  //список веб-драйверів
...

Как установить время ожидания загрузки контента в Веб-драйвере?

Работая с веб-драйвером, программист может наткнуться на проблему, которая связана с преждевременным выполнением команд над контентом страницы. При выполнении кода это приводит к исключениям, которые можно исправить, установив время ожидания. Это позволит веб-драйверу пытаться выполнить команды в предоставленное время, если контент загружен не полностью.

...
   IWebDriver driver = new FireFoxDriver();
   driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); //webdriver будет пытаться выполнить команды над контентом в установленный срок (10 секунд)
...

Как спрятать (убрать) окно консоли Веб-драйвера?

...
   ChromeDriverService chromeservice = ChromeDriverService.CreateDefaultService();
   chromeservice.HideCommandPromptWindow = true;  //спрятать консоль 
   IWebDriver driver = new ChromeDriver(chromeservice);

   FirefoxDriverService firefoxservice = FirefoxDriverService.CreateDefaultService();
   firefoxservice.HideCommandPromptWindow = true;  //спрятать консоль 
   IWebDriver driver = new FirefoxDriver(firefoxservice);
...

Как выполнить джава-скрипт код в окне Веб-драйвера?

Существует два сродных способа инъектировать свой джава-скрипт в страницу, управляемую веб-драйвером:

  • с помощью методов веб-драйвера ExecuteScript или ExecuteScriptAsync
  • с помощью приведения экземпляра веб-драйвера к интерфейсу
...
    FirefoxDriver firefoxdriver = new FirefoxDriver();
    firefoxdriver.ExecuteScript("alert("Привет!");");  //ваш js код
    firefoxdriver.Quit();

    IWebDriver driver= new FirefoxDriver();
    IJavaScriptExecutor executor = driver as IJavaScriptExecutor;
    executor.ExecuteScript("alert("Здравствуйте!");");   //ваш js код
    driver.Quit();
...

Как переместить курсор в заданную точку Веб-драйвером?

Когда приходится иметь дело со страницами, которые содержат фронт-енд логику с обработкой поведения мыши, необходимо уметь имитировать управление мышью Веб-драйвером. К примеру, для того, чтобы спарсить веб-страницу, надо выкачать весь полезный контент. Как правило, по ряду причин (часто для защиты от спам-ботов) веб-мастера скрывают часть контента от просмотра ботами. Самый распространенный способ достигнуть этого: проверить перемещалась ли мышка по окну. Иногда данный код может быть полезен:

...
   ChromeDriver driver = new ChromeDriver();
   Actions action = new Actions(driver);

   action.MoveByOffset(5,5).Perform();  //перемещает курсор в точку (5,5)

   action.MoveByOffset(10, 15).Perform();  //перемещает курсор в точку (10,15)
...

Как перейти на веб-страницу веб-драйвером?

...
   driver.Navigate().GoToUrl("https://www.brainbeast.best/");
...

Как установить время на загрузку страницы?

...
   driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(10);  //время на загрузку страницы
   try
   {
      driver.Navigate().GoToUrl(url);  //если страница не загружена в течении 10 секунд, то будет выброшена ошибка
   }
   catch
   {
      //обработать ошибку
   }
...

Как передать аргументы командной строки в webdriver chrome?

В случае сложного, разнообразного тестирования может пригодиться настройка браузера через аргументы командной строки:

...
   ChromeOptions options = new ChromeOptions();
   options.AddArguments(new List() { "аргумент 1", "аргумент 2", "и так далее" });  //добавление аргументов

   ChromeDriver driver = new ChromeDriver(options);
...

Полный список аргументов командной строки браузера chrome.

Как установить безоконный режим в веб-драйвере?

Если тесты выполняются без потребности в выводе графической информации, то логично будет отключить показ окна браузера. Чтобы запустить веб-драйвер в безоконном режиме, требуется передать аргумент консольной строки браузера:

...
   ChromeOptions options = new ChromeOptions();
   options.AddArguments(new List() { "headless"});
...

Добавить комментарий