Reading mode

Selenium – це набір інструментів, які використовуються для автоматизації роботи браузера. Існують реалізації керування “селеніумом” для таких популярних мов, як С#, PHP та Java.

Як впровадити Selenium в проект Visual Studio?

Перш за все, необхідно встановити пакети Selenium.Webdriver у проект. За допомогою пакетного менеджера NuGet програміст може встановити їх прямо з вікна проекта.

  1. Перейдіть в Tools/NuGet Package Manager/Manage NuGet Packages for Solution…/ в Visual Studio
  2. У вкладці”NuGet – Solution” перейдіть в Browse
  3. У пошуковому рядку введіть назву пакета – Selenium.Webdriver
  4. Оберіть пакет і натисніть “Встановити”

Далі необхідно завантажити драйвери, відповідповідні до обраних для тестування браузерам і ОС комп’ютера:nuget

  1. Оновіть обрані браузери
  2. Завантажте відповідні драйвери
  3. Розмістіть завантажений(-ні) драйвер(-и) (.exe) в директорію додатка (наприклад, …/bin/debug/)

Останній штрих:
додавання using директив до простору імен Selenium:

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

Зауваження: Webdriver не запрацює у Firefox браузері, якщо не встановлений Firefox: Developer Edition.

Як створити екземпляр WebDriver у мові c#?

Для тестування кожного браузера існує відповідний класс:

  • ChromeDriver
  • FirefoxDriver
  • і так далі

Вони всі успадковують інтерфейс IWebDriver. Екземпляр класу WebDriver можна створити за допомогою конструктора без параметрів (який має декілька перевантажень):

...
   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
   {
      //опрацювати помилку
   }
...

Як передати браузеру аргументи командного рядка?

У випадку створення складних та багатоманітних тестів застосування аргументів командного рядка може бути корисним і необхідним.

...
   ChromeOptions options = new ChromeOptions();
   options.AddArguments(new List<string>() { "аргумент 1", "аргумент 2", "і так далі" });  //додавання списку аргументів

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

Повний список аргументів командного рядка браузера Chrome.

Як встановити безголовий (безвіконний) режим в окні веб-драйвера?

Якщо використання тестів не потребує показу корисної графічної інформації, то логічно вимкнути віконний режим в браузері. Щоб запустити браузер у безвіконному режимі, треба додати аргумент командного рядка:

...
   ChromeOptions options = new ChromeOptions();
   options.AddArguments(new List<string>() { "headless"});
...
Share this Post