Автоматизация тестирования веб-приложений с помощью Selenium распространённое решение среди разработчиков автотестов, а C# один из самых популярных языков программирования, поэтому сочетание этих инструментов не вызывает вопросов. Для разработки с использованием этих технологий, зачастую используется популярное проприетарное ПО от Microsoft для Windows, однако мне было интересно узнать какие свободные аналоги можно использовать не отходя от стека Selenium + C# для данной задачи.
Так как русскоязычных статей на эту тему я не нашёл, то поделюсь своим опытом настройки среды для разработки и отладки автотестов на C# в Linux.
В качестве ОС использовалась Kubuntu 18.04 64-bit с ядром Linux 4.15.0-99-generic, установленная с ISO-образа, скаченного с официального сайта. Полагаю подойдёт любой современный и достаточно популярный дистрибутив Linux.
В роли CLR для C# выступал Mono JIT компилятор версии 6.6.0.166. Его установка заключалась в последовательном копировании и выполнении команд в терминал(в Kubuntu это Konsole) с этой страницы.
А в качестве IDE использовался MonoDevelop 7.8.4 (build 2), установленный аналогично Mono.
Selenium поддерживает множество браузеров, но все мне было мучить лень и я ограничился Chrome’ом, установив 64-bit .deb пакет.
Далее создаем решение в MonoDevelop:
Для управления браузером ещё потребуются пара пакетов NuGet:
Вот, собственно, и всё, осталось написать какой-нибудь код, чтобы проверить, что всё настроилось как надо. При создании решения, автоматически создаётся файл для тестовых методов Test.cs, в него я положил следующие несколько строк кода:
Запуск теста осуществляется из вкладки «Модульные тесты», если она не отображается, идем в меню «Просмотреть» и выбираем «Тест».
Успешной автоматизации =)
Так как русскоязычных статей на эту тему я не нашёл, то поделюсь своим опытом настройки среды для разработки и отладки автотестов на C# в Linux.
В качестве ОС использовалась Kubuntu 18.04 64-bit с ядром Linux 4.15.0-99-generic, установленная с ISO-образа, скаченного с официального сайта. Полагаю подойдёт любой современный и достаточно популярный дистрибутив Linux.
В роли CLR для C# выступал Mono JIT компилятор версии 6.6.0.166. Его установка заключалась в последовательном копировании и выполнении команд в терминал(в Kubuntu это Konsole) с этой страницы.
А в качестве IDE использовался MonoDevelop 7.8.4 (build 2), установленный аналогично Mono.
Selenium поддерживает множество браузеров, но все мне было мучить лень и я ограничился Chrome’ом, установив 64-bit .deb пакет.
Далее создаем решение в MonoDevelop:
- запускаем MonoDevelop
- заходим в меню «Файл»
- выбираем «Создать решение»
- нажимаем «.NET»
- выбираем «Проект библиотеки NUnit» и жмём «Далее»
- указываем название и путь решения, жмём «Создать»
Для управления браузером ещё потребуются пара пакетов NuGet:
- идём в меню «Проект» и выбираем «Добавить пакеты NuGet»
- ищем и устанавливаем пакет Selenium.WebDriver
- ищем и устанавливаем пакет Selenium.WebDriver.ChromeDriver
Вот, собственно, и всё, осталось написать какой-нибудь код, чтобы проверить, что всё настроилось как надо. При создании решения, автоматически создаётся файл для тестовых методов Test.cs, в него я положил следующие несколько строк кода:
using NUnit.Framework;
using System;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;
namespace SeleniumTests
{
[TestFixture()]
public class Test
{
[Test()]
public void TestCase()
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://habr.com/");
Assert.IsTrue(driver.Url.Contains("habr.com"), "Что-то не так =(");
driver.Quit();
}
}
}
Запуск теста осуществляется из вкладки «Модульные тесты», если она не отображается, идем в меню «Просмотреть» и выбираем «Тест».
Успешной автоматизации =)
cashby
А почему не .net core?
Qautomat Автор
Так можно будет легаси тесты с windows перенести, да и .net core еще достаточно сырой имхо
ColdPhoenix
А можете рассказать в чем сырость?
Qautomat Автор
Лично мне не хватает кросс платформенного UI фреймворка для разработки десктопных приложений с конструктором форм, на классическом .NET я могу писать на GTK#
cashby
Подозреваю, что в этом есть какая-то логика, но пока для меня неочевидно, при чем здесь разработка десктоп приложений, сырость и разработка selenium тестов.
Qautomat Автор
Преимущества .net core для меня тоже не очевидны, а десктопность может понадобится, если в системе: автотесты — агенты — сервер запуска, захочется реализовать агенту красивый UI, автоматизировать создание предусловий ручных тестов через API с максимально простым интерфейсом(тут я вообще за веб-приложение, но если лишнего сервака нет, то пойдет и десктопное приложение)
cashby
Я правильно понимаю, что вы переизобретаете CI?
Qautomat Автор
Эм нет, CI есть готовый, просто параллелим запуск тестов в удобной для заказчика форме
P9os
Дак WPF и WinForms уже есть с net core 3.1
Qautomat Автор
Это не кросс-платформа, только на Windows
P9os
Avalonia?
Qautomat Автор
«с конструктором форм»?
P9os
Точно не скажу, так как незнаком с ui фреймворками. Лучше посмотри здесь:
https://avaloniaui.net/
Qautomat Автор
Там сказано что конструктор форм реализован исключительно для Visual Studio
Magals
там конструктора форм нет, но можно использовать тот что поставляется с WPF, но и то не для всех элементов
ColdPhoenix
Разве GTK# не работает так же и на .net core? Посмотрел мельком, вроде пишут что работает.
Qautomat Автор
собрать для Linux думаю не проблема да, но разрабатывать в Linux net core с десктопным UI, более трудоемко — ни в Rider, ни в MonoDevelop нет шаблонов подобных решений