Учебник по Selenium C# на примере NUnit

Содержание:

Обзор Selenium

Selenium – это инструмент веб-автоматизации с открытым исходным кодом, который поддерживает несколько браузеров и операционных систем. Он позволяет тестировщикам использовать для создания автоматизированных тестов различные языки программирования, такие как Java, C#, Python, .Net, Ruby, PHP и Perl.

Обзор C#

C# – это объектно-ориентированный язык программирования, производный от C++ и Java. C# позволяет разработчикам создавать приложения с помощью Visual Studio на платформе .Net. Основные возможности C#:

  1. Это объектно-ориентированный язык программирования
  2. Поддерживает разработку консольных, оконных и веб-приложений
  3. Предоставляет такие возможности, как инкапсуляция, наследование и полиморфизм.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Основной синтаксис языка C#

Программа на языке C# должна содержать следующие разделы:

  1. Объявление пространства имен
  2. Классы
  3. Атрибуты и методы класса
  4. Метод main
  5. Инструкции программы

Ниже приведен пример программы на 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.

Веб-страница загрузки Visual Studio. Есть три варианта: community, professional и enterprise.

Шаг 2. Откройте загруженный exe-файл. Нажмите “Yes”, если потребуется ввести права администратора.

Шаг 3. Появится следующее всплывающее окно. Нажмите на кнопку “Continue”.

Кнопка "Continue" во всплывающем окне.

Файлы будут загружены (вы увидите индикатор выполнения загрузки).

Шаг 4. На следующем экране установите флажки для:

  • Универсальная платформа разработки для Windows.
  • Разработка десктопных приложений на платформе .Net.

Нажмите кнопку “Install”.

Вкладка Workloads с отмеченными флажками и кнопкой "Install"

Дождитесь завершения установки каждого компонента. Размер файлов составляет 16 ГБ, так что процесс займет какое-то время.

Процесс установки компонентов Visual Studio

Шаг 5. На экране появится следующее всплывающее окно. Нажмите на кнопку ‘Restart’.

Окно сообщает о необходимости перезагрузки

Шаг 6. После перезагрузки компьютера найдите в меню “Пуск” пункт “Visual Studio” и щелкните по нему. Появится следующее всплывающее окно. Щелкните на ссылке “Not now, maybe later”, если у вас нет существующей учетной записи.

Приветственное окно Visual Studio

Шаг 7. На следующем экране выберите цветовую тему по своему вкусу и нажмите кнопку “Запустить Visual Studio”.

Выбор цветовой темы в Visual Studio

Шаг 8. Появится экран Visual Studio “Get Started”.

Стартовый рабочий экран Visual Studio

Создание нового проекта в Visual Studio

Шаг 1. В меню Файл откройте New > Project.

Создание нового проекта в Visual Studio

Шаг 2. На следующем экране:

  1. Выберите опцию “Visual C#”
  2. Щелкните на Console App (.Net Framework)
  3. Введите имя преокта (у нас – “Guru99”)
  4. Нажмите OK.
Выбор языка программирования и фреймворка при создании нового проекта в Visual Studio

Шаг 3. После успешного создания проекта на экране появится следующее окно:

Окно, возникающее после успешного создания проекта в Visual Studio

Настройки Visual Studio с Selenium WebDriver

Шаг 1. Перейдите в раздел Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution

Открытие Manage NuGet Packages for Solution...

Шаг 2. На следующем экране:

  1. Найдите Selenium
  2. Выберите первый результат поиска
  3. Установите флажок возле имени своего проекта
  4. Нажмите кнопку “Install”
Установка  Selenium WebDriver в Visual Studio

Шаг 3. Нажмите на кнопку “OK” во всплывающем окне.

Окно предпросмотра изменений

Шаг 4. После успешной установки пакета будет выведено следующее сообщение:

Сообщение, возникающее после успешной установки пакета, - "Finished"

Фреймворк 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).

Открытие вкладки Manage NuGet Packages for Solution

Шаг 2. В следующем окне:

  1. Найдите NUnit
  2. Выберите результат поиска
  3. Выберите проект
  4. Нажмите кнопку “Install”
Поиск и выбор NUnit для установки

Шаг 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). В этом окне:

  1. Найдите NUnitTestAdapter.
  2. Выберите результат поиска.
  3. Выберите проект.
  4. Нажмите кнопку “Install”.
Окно поиска и выбора NUnitTestAdapter

Шаг 2. Нажмите OK на всплывающем окне подтверждения. После завершения установки вы увидите соответствующие сообщение.

Selenium и фреймворк NUnit

Интеграция Selenium с фреймворком NUnit дает возможность тестировщику различать классы тестов. NUnit также позволяет тестировщикам использовать такие аннотации, как SetUp, Test и TearDown, для выполнения действий до и после запуска теста.

Фреймворк NUnit можно интегрировать с Selenium, создав и запустив тестовый класс NUnit.

Как создать тестовый класс NUnit в Selenium

Шаг 1. В обозревателе решений щелкните правой кнопкой мыши на проекте, а далее перейдите по пути Add > Class.

Создание тестового класса NUnit в Selenium, шаг 1 - в обозревателе решений щелкнуть правой кнопкой мыши на проекте > Add > Class

Шаг 2.  Появится окно создания класса.

  1. Присвойте имя классу.
  2. Нажмите на кнопку Add.
Создание тестового класса NUnit в Selenium, шаг 2 -в окне создания класса присвоить имя классу и нажать кнопку Add

Шаг 3. На экране появится следующее окно:

Шаг 3 - созданный класс NUnit в Selenium

Шаг 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”.

Создание тестового класса NUnit в Selenium, шаг 5 - после добавления кода нажать на кнопку "Build" -> "Build solution"

ПРИМЕЧАНИЕ:  При сборке вы можете получить ошибку типа “Не содержит статического метода ‘main’, подходящего для точки входа”.

Ошибка "Не содержит статического метода 'main', подходящего для точки входа".

Чтобы решить эту проблему, перейдите в раздел Project > Properties и измените Output Type на “Class Library”. По умолчанию используется “Console application”.

Решение проблемы с ошибкой -  перейти в раздел Project > Properties и изменить Output Type на "Class Library"

Шаг 6. После успешной сборки нам необходимо открыть окно Test Explorer (Test -> Windows -> Test Explorer).

Создание тестового класса NUnit в Selenium, шаг 6 - после успешной сборки открыть окно Test Explorer. Щелкнуть на Test -> Windows -> Test Explorer.

Шаг 7.  Откроется окно Test Explorer со списком доступных тестов. Щелкните правой кнопкой мыши на Test Explorer и выберите Run Selected Tests.

Создание тестового класса NUnit в Selenium, шаг 7 - в открывшемся окне Test Explorer со списком доступных тестов щелкнуть правой кнопкой мыши на Test Explorer и выбрать Run Selected Tests.

Шаг 8. Selenium должен открыть браузер с указанным URL-адресом и закрыть его. Статус тестового набора будет изменен на «Passed» в окне обозревателя тестов.

Создание тестового класса NUnit в Selenium, шаг 8 - статус тестового набора в окне обозревателя тестов

Команды Selenium WebDriver в C#

Для взаимодействия с браузером в C# используется интерфейс “IWebDriver”. Ниже перечислены команды, доступные с помощью Selenium в C#:

  1. Команды браузера.
  2. Команды веб-элементов.
  3. Команды выпадающего списка.

Теперь в учебном пособии 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. Перейдите на веб-страницу Demo Guru99 – https://demo.guru99.com/test/guru99home/.
  2. Увеличьте окно до максимума.
  3. Щелкните на меню “Тестирование.
  4. Закройте браузер.
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:

Сценарий теста:.

  1. Перейдите на демонстрационную страницу Guru 99 – https://demo.guru99.com/test/guru99home/.
  2. Введите данные в текстовое поле электронной почты.
  3. Нажмите на кнопку регистрации.
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-локатора:

Сценарий теста:

  1. Перейдите на демонстрационную страницу Guru 99 – https://demo.guru99.com/test/guru99home/.
  2. Введите данные в текстовое поле электронной почты.
  3. Нажмите на кнопку регистрации.
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: Выбор значения в раскрывающемся списке:

Сценарий теста:

  1. Перейдите на демонстрационную страницу Guru 99 – https://demo.guru99.com/test/guru99home/.
  2. Щелкните на ссылке SAP.
  3. Введите данные в текстовые поля имени и электронной почты.
  4. Выберите значение из раскрывающегося списка Course.
  5. Закройте браузер.
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».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *