Содержание:
- Обзор Selenium
- Обзор C#
- Основной синтаксис языка C#
- Selenium с настройкой C#
- Фреймворк NUnit: Обзор
- Selenium и фреймворк NUnit.
- Команды Selenium WebDriver в C#
- Команды веб-элементов
- Примеры кода
Обзор Selenium
Selenium – это инструмент веб-автоматизации с открытым исходным кодом, который поддерживает несколько браузеров и операционных систем. Он позволяет тестировщикам использовать для создания автоматизированных тестов различные языки программирования, такие как Java, C#, Python, .Net, Ruby, PHP и Perl.
Обзор C#
C# – это объектно-ориентированный язык программирования, производный от C++ и Java. C# позволяет разработчикам создавать приложения с помощью Visual Studio на платформе .Net. Основные возможности C#:
- Это объектно-ориентированный язык программирования
- Поддерживает разработку консольных, оконных и веб-приложений
- Предоставляет такие возможности, как инкапсуляция, наследование и полиморфизм.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Основной синтаксис языка C#
Программа на языке C# должна содержать следующие разделы:
- Объявление пространства имен
- Классы
- Атрибуты и методы класса
- Метод main
- Инструкции программы
Ниже приведен пример программы на C# для вывода в Selenium текста “Guru99” на системную консоль.
using System; namespace FirstProgram { class DemoPrint { static void main(){ Console.WriteLine("Guru99"); } } }
Давайте разберем этот пример.
- Пространство имен представляет собой совокупность нескольких классов. Каждое пространство имен должно быть объявлено с использованием ключевого слова
using
. - Первый оператор кода включает в нашу программу пространство имен
System
. Оно определяет фундаментальные классы и события, используемые в C#. Выбор пространства имен зависит от требований программы. - Второе утверждение объявляет пространство имен
FirstProgram
для классаDemoPrint
. Файл C# может содержать несколько классов в одном и том же пространстве имен. - Третий оператор включает объявление класса. Класс может содержать несколько атрибутов и несколько методов.
- Четвертый оператор содержит объявление метода
main
. Этот метод является начальной точкой выполнения для каждого класса. - Последнее утверждение представляет собой синтаксис языка C#, используемый для вывода утверждения на консоль.
WriteLine
– это метод классаConsole
.
Selenium с настройкой для использования C#
В этом учебном пособии по использованию C# в Selenium мы рассмотрим пошаговый процесс настройки Visual Studio с Selenium WebDriver.
Настройка Visual Studio
Visual Studio – это интегрированная среда разработки (IDE), которая используется разработчиками для создания различных приложений.
Шаг 1. Перейдите по URL-адресу https://visualstudio.microsoft.com/downloads/ и нажмите на кнопку “Free download”, отображаемую на вкладке Visual Studio Community.
Шаг 2. Откройте загруженный exe-файл. Нажмите “Yes”, если потребуется ввести права администратора.
Шаг 3. Появится следующее всплывающее окно. Нажмите на кнопку “Continue”.
Файлы будут загружены (вы увидите индикатор выполнения загрузки).
Шаг 4. На следующем экране установите флажки для:
- Универсальная платформа разработки для Windows.
- Разработка десктопных приложений на платформе .Net.
Нажмите кнопку “Install”.
Дождитесь завершения установки каждого компонента. Размер файлов составляет 16 ГБ, так что процесс займет какое-то время.
Шаг 5. На экране появится следующее всплывающее окно. Нажмите на кнопку ‘Restart’.
Шаг 6. После перезагрузки компьютера найдите в меню “Пуск” пункт “Visual Studio” и щелкните по нему. Появится следующее всплывающее окно. Щелкните на ссылке “Not now, maybe later”, если у вас нет существующей учетной записи.
Шаг 7. На следующем экране выберите цветовую тему по своему вкусу и нажмите кнопку “Запустить Visual Studio”.
Шаг 8. Появится экран Visual Studio “Get Started”.
Создание нового проекта в Visual Studio
Шаг 1. В меню Файл откройте New > Project.
Шаг 2. На следующем экране:
- Выберите опцию “Visual C#”
- Щелкните на Console App (.Net Framework)
- Введите имя преокта (у нас – “Guru99”)
- Нажмите OK.
Шаг 3. После успешного создания проекта на экране появится следующее окно:
Настройки Visual Studio с Selenium WebDriver
Шаг 1. Перейдите в раздел Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution
Шаг 2. На следующем экране:
- Найдите Selenium
- Выберите первый результат поиска
- Установите флажок возле имени своего проекта
- Нажмите кнопку “Install”
Шаг 3. Нажмите на кнопку “OK” во всплывающем окне.
Шаг 4. После успешной установки пакета будет выведено следующее сообщение:
Фреймворк NUnit
NUnit — это фреймворк модульного тестирования, поддерживаемый Visual Studio и Selenium WebDriver. NUnit является наиболее широко используемым фреймворком модульного тестирования для приложений .Net. Он представляет результаты тестирования в удобочитаемом формате и позволяет тестировщику производить отладку автоматизированных тестов.
Для его использования нам необходимо установить NUnit Framework и NUnit Test Adapter в Visual Studio.
Установка NUnit
Шаг 1. Откройте “Manage NuGet Packages for Solution”, как при установке Selenium WebDriver (Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution).
Шаг 2. В следующем окне:
- Найдите NUnit
- Выберите результат поиска
- Выберите проект
- Нажмите кнопку “Install”
Шаг 3. Появится следующее всплывающее окно. Нажмите на кнопку ‘Ok’.
Шаг 4. После завершения установки появится соответствующее сообщение.
Загрузка NUnit Test Adapter
Обратите внимание, что приведенные ниже шаги работают только для 32-битных систем. Для 64-битных необходимо загрузить “NUnit3 Test Adapter”, выполнив те же действия, что описаны ниже.
Шаг 1. Перейдите в “Manage NuGet Packages for Solution” (Tools ->NuGet Package Manager -> Manage NuGet Packages for Solution). В этом окне:
- Найдите NUnitTestAdapter.
- Выберите результат поиска.
- Выберите проект.
- Нажмите кнопку “Install”.
Шаг 2. Нажмите OK на всплывающем окне подтверждения. После завершения установки вы увидите соответствующие сообщение.
Selenium и фреймворк NUnit
Интеграция Selenium с фреймворком NUnit дает возможность тестировщику различать классы тестов. NUnit также позволяет тестировщикам использовать такие аннотации, как SetUp, Test и TearDown, для выполнения действий до и после запуска теста.
Фреймворк NUnit можно интегрировать с Selenium, создав и запустив тестовый класс NUnit.
Как создать тестовый класс NUnit в Selenium
Шаг 1. В обозревателе решений щелкните правой кнопкой мыши на проекте, а далее перейдите по пути Add > Class.
Шаг 2. Появится окно создания класса.
- Присвойте имя классу.
- Нажмите на кнопку Add.
Шаг 3. На экране появится следующее окно:
Шаг 4. Добавьте в созданный класс следующий код. Обратите внимание, что при инициализации драйвера Chrome необходимо указать местоположение файла chromdriver.exe.
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class Guru99Demo { IWebDriver driver; [SetUp] public void startBrowser() { driver = new ChromeDriver("D:\\3rdparty\\chrome"); } [Test] public void test() { driver.Url = "http://www.google.co.in"; } [TearDown] public void closeBrowser() { driver.Close(); } } }
Шаг 5. Во вкладке “Build” выберите “Build solution”.
ПРИМЕЧАНИЕ: При сборке вы можете получить ошибку типа “Не содержит статического метода ‘main’, подходящего для точки входа”.
Чтобы решить эту проблему, перейдите в раздел Project > Properties и измените Output Type на “Class Library”. По умолчанию используется “Console application”.
Шаг 6. После успешной сборки нам необходимо открыть окно Test Explorer (Test -> Windows -> Test Explorer).
Шаг 7. Откроется окно Test Explorer со списком доступных тестов. Щелкните правой кнопкой мыши на Test Explorer и выберите Run Selected Tests.
Шаг 8. Selenium должен открыть браузер с указанным URL-адресом и закрыть его. Статус тестового набора будет изменен на «Passed» в окне обозревателя тестов.
Команды Selenium WebDriver в C#
Для взаимодействия с браузером в C# используется интерфейс “IWebDriver”. Ниже перечислены команды, доступные с помощью Selenium в C#:
- Команды браузера.
- Команды веб-элементов.
- Команды выпадающего списка.
Теперь в учебном пособии Selenium C Sharp рассмотрим по очереди команды Selenium WebDriver
Команды браузера:
Ниже приведен список команд браузера, доступных в C# с помощью Selenium.
Имя команды | Описание | Синтаксис |
---|---|---|
Url Command | Используется для открытия указанного URL-адреса в браузере. | driver.Url = “https://www.guru99.com” |
Title Command | Используется для получения заголовка открытой в данный момент веб-страницы. | String title = driver.Title |
PageSource Command | Используется для получения исходного кода открытой в данный момент веб-страницы. | String pageSource = driver.PageSource |
Close Command | Используется для закрытия недавно открытого экземпляра браузера. | driver.Close(); |
Quit Command | Используется для закрытия всех открытых экземпляров браузера | driver.Quit(); |
Back Command | Используется для перехода к предыдущей странице истории браузера. | driver.Navigate().Back(); |
Forward Command | Используется для перехода к следующей странице истории браузера. | driver.Navigate().Forward() |
Refresh Command | Используется для выполнения обновления браузера. | driver.Navigate().Refresh() |
Команды веб-элементов
Элемент Webelement представляет собой все элементы на веб-странице. Они представлены HTML-тегами. К Webelement относятся все кнопки, текстовые поля, ссылки, изображения, таблицы и фреймы. Операции над веб-элементами могут быть вызваны с помощью интерфейса IWebelement. Чтобы взаимодействовать с веб-элементом, необходимо найти его на веб-странице и затем выполнить над ним операции. Для определения Xpath Webelement можно использовать такие инструменты, как Firebug и Firepath.
Ниже приведен список команд Webelement, доступных в C#.
Имя команды | Описание | Синтаксис |
---|---|---|
Click command | Используется для щелчка по веб-элементу. Чтобы элемент был кликабельным, он должен быть виден на веб-странице. Эта команда также используется для операций с флажками и переключателями. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); element.Click(); |
Clear command | Используется специально для очистки существующего содержимого текстовых полей. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); element.Clear(); |
SendKeys command | Используется для ввода значения в текстовые поля. Вводимое значение должно быть передано в качестве параметра команде | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); element.SendKeys(“guru99”); |
Displayed command | Используется для определения видимости конкретного элемента на веб-странице. Команда возвращает булево значение, true или false, в зависимости от видимости веб-элемента. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); Boolean status = element.Displayed; |
Enabled command | Используется для определения того, включен ли определенный веб-элемент на веб-странице. Команда возвращает булево значение: true или false. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); Boolean status = element.Enabled; |
Selected command | Используется для определения того, выбран ли конкретный веб-элемент. Она используется для флажков, радиокнопок и операций выбора. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); Boolean status = element.Selected; |
Submit command: | Аналог команды click, разница заключается в том, есть ли в HTML-форме кнопка с типом Submit. Если команда click щелкает по любой кнопке, то команда submit щелкает только по кнопкам с типом submit. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); element.submit(); |
Text command | Возвращает внутренний текст Webelement. В качестве результата она возвращает строковое значение. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); String text=element.Text; |
TagName command | Возвращает HTML-тег веб-элемента. В качестве результата возвращается строковое значение. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); String tagName = element.TagName; |
GetCSSValue Command: | Используется для возврата цвета веб-элемента в виде строки rgba (Red, Green, Blue и Alpha). | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); String color = element.getCSSValue;Output– If the color of element is red, output would be rgba(255,0,0,1) |
Выпадающие команды:
Операции с выпадающими элементами в C# могут быть выполнены с помощью класса SelectElement.
Ниже перечислены различные операции с выпадающими элементами, доступные в C#.
Имя команды | Описание | Синтаксис |
---|---|---|
SelectByText Command | Выбирает опцию выпадающего списка на основе текста опции. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); select.SelectByText(“Guru99”); |
SelectByIndex Command | Используется для выбора опции по ее индексу. Индекс выпадающего списка начинается с 0. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); select.SelectByIndex(“4”); |
SelectByValue Command | Используется для выбора параметра на основе его значения. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); select.SelectByValue(“Guru99”); |
Options Command | Используется для получения списка опций, отображаемых в раскрывающемся списке. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); List<IWebelement> options = select. Options; int size = options.Count; for(int i=0;i<options.size();i++) { String value = size.elementAt(i).Text; Console.writeLine(value); }The above code prints all the options onto console within a dropdown. |
IsMultiple command | Используется для определения того, является ли выпадающий список многовариантным; многовариантный список позволяет пользователю выбрать несколько опций в выпадающем списке одновременно. Эта команда возвращает булево значение. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); Boolean status = select.IsMultiple(); |
DeSelectAll command | Используется в раскрывающихся списках с несколькими вариантами выбора. Она очищает уже выбранные варианты. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); select.DeSelectAll(); |
DeSelectByIndex command | Снимает выделение с уже выбранного значения по его индексу. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); select.DeSelectByIndex(“4”); |
DeSelectByValue command | Снимает выделение с уже выбранного значения, используя его значение. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); select.DeSelectByValue(“Guru99”); |
DeSelectByText command | Снимает выделение с уже выделенного значения, используя его текст. | IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); SelectElement select = new SelectElement(element); select.DeSelectByText(“Guru99”); |
Образцы кода
Пример 1: Переход по ссылке с использованием локатора XPATH:
Сценарий теста:.
- Перейдите на веб-страницу Demo Guru99 – https://demo.guru99.com/test/guru99home/.
- Увеличьте окно до максимума.
- Щелкните на меню “Тестирование.
- Закройте браузер.
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("D:\\3rdparty\\chrome"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebelement link = m_driver.FindElement(By.XPath(".//*[@id='rt-header']//div[2]/div/ul/li[2]/a")); link.Click(); m_driver.Close(); } } }
Пример 2: Ввод данных в TextBox и нажатие на кнопку с использованием локатора XPATH:
Сценарий теста:.
- Перейдите на демонстрационную страницу Guru 99 – https://demo.guru99.com/test/guru99home/.
- Введите данные в текстовое поле электронной почты.
- Нажмите на кнопку регистрации.
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-email']")); IWebElement signUpButton = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-submit']")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
Пример 3: Ввод данных в TextBox и нажатие на кнопку с использованием CSS-локатора:
Сценарий теста:
- Перейдите на демонстрационную страницу Guru 99 – https://demo.guru99.com/test/guru99home/.
- Введите данные в текстовое поле электронной почты.
- Нажмите на кнопку регистрации.
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-email]")); IWebElement signUpButton = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-submit]")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
Пример 4: Выбор значения в раскрывающемся списке:
Сценарий теста:
- Перейдите на демонстрационную страницу Guru 99 – https://demo.guru99.com/test/guru99home/.
- Щелкните на ссылке SAP.
- Введите данные в текстовые поля имени и электронной почты.
- Выберите значение из раскрывающегося списка Course.
- Закройте браузер.
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI; namespace Guru99Demo { class TestSelect { IWebDriver m_driver; [Test] public void selectDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebElement course = m_driver.FindElement(By.XPath(".//*[@id='awf_field-91977689']")); var selectTest = new SelectElement(course); // Select a value from the dropdown selectTest.SelectByValue("sap-abap"); } } }
Выводы:
- Для того чтобы использовать Selenium WebDriver с C#, необходимо установить Visual Studio.
- NUnit – фреймворк для модульного тестирования, поддерживаемый Visual Studio и Selenium Webdriver.
- Для его использования нам необходимо установить NUnit Framework и NUnit Test Adapter в Visual Studio.
- Фреймворк NUnit может быть интегрирован с Selenium путем создания тестового класса NUnit и запуска тестового класса с помощью фреймворка NUnit.
- NUnit также позволяет тестировщикам использовать такие аннотации, как SetUp, Test и TearDown, для выполнения действий до и после выполнения теста.
- Команды Selenium WebDriver можно разделить на команды браузера, команды веб-элементов и команды выпадающих элементов.
Перевод статьи «Selenium C# Tutorial with NUnit Example».