С# + WebDriver + какой Framework? (посоветуйте)

framework
Теги: #<Tag:0x00007fedc03a7090>

(Рома Иовлев) #21

Html Elements по сути это концепция (хотя рассматривается на примере продукта Яндекса)
Суть ее не требует знаний языков программирования. (кстати у Яндекса есть вариант их инструмента и для C#)
Концепция заключается в следующем: мы смотрим на объекты на странице с точки зрения пользователя, с точки зрения ООП
Что мы видим на страницах когда тестируем? Кнопки, чекбоксы, текстовые поля. Ну так давай те опишем объекты которые им соответствуют. Вот суть Html Elements )
Каждый Элемент имеет локатор на себя и может делать определенный набор действий (Click, GetLabel и пр.)
В отличие от WebElement Webdriver-а который умеет(пытается) делать все.(кликать куда нельзя кликать и пр.)

VI Elements - включает в себя Htmlelements и развивает их
Добавляя к возможностям HtmlElements настройки каждого действия. (если из списка можно выбрать элемент, то на разных сайтах это сделано по разному, хотя и выглядит одинаково) инструмент Яндекса и Bumblbee умеют это делать только одним способом, Либо надо создавать свой элемент наследуясь от базовых. В VIQA не надо создавать своих классов просто можно переопределить любое действие.

Ну и есть возможность переопределить работу всех элементов в целом (такое АОП) добавить логирование для всех действий сразу, сбор каких-нибудь метрик или чего вам заблагорассудится )


(Рома Иовлев) #22

Да Grid сейчас не поддерживается. Это не самый простой элемент. Постараюсь сделать в ближайшее время)
А что вы подразумеваете под remote execution? Запуск тестов удаленно? так это лежит на плечах NUnit или MSTest или кто у вас тесты собирает. Вика вообще этого не касается.


(Sergey Korol) #23

RemoteWebDriver support. Я вообще с джавой работаю. :smile:
Собственно устраивать холивары и экскурсы на тему, зачем нужен RemoteWebDriver, мне не хочется. Но в свое время общими усилиями на этом же форуме мы убедили создателя Seleneide в его надобности. Если будет интересно, поищите соответствующую тему. Даже 2, по-моему.


(Alex Shats) #24

Почему NUnit или MSTest? Селениум же предоставляет все необходимое для удаленного запуска.


(Рома Иовлев) #25

Ну так вам никто не мешает запустить ваши тесты используя RemoteWebDriver…
var MySite = new VISite(() => new RemoteWebDriver());
Вы можете передать сайту любой Драйвер поддерживаемый Selenium, с любыми настройками. И делать все тоже самое с драйвером, что вы делаете работая просто с Selenium.
Или я чего-то не понимаю в вашем вопросе?


(Рома Иовлев) #26

VIQA вроде как поддерживает все драйверы Selenium. C любыми настройками.

Вот кстати пример не совсем по теме, как можно запустить 3 тестовых сценария параллельно в разных браузерах
Можно аналогично в параллельном потоке делать некие вещи, пока основной тест чего-то ждет

    [Test]
    public void VIQAParallelTestsExample(
        [ValueSource("IPhoneProducts")] Product product,
        [ValueSource("IPhoneFilters")] Filter filter)
    {
        SimpleTestScenarioTaskRun(new MySite(BrowserType.Chrome), product, filter);
        SimpleTestScenarioTaskRun(new MySite(BrowserType.Firefox), product, filter);
        SimpleTestScenarioTaskRun(new MySite(BrowserType.IE), product, filter);
    }

    private Task SimpleTestScenarioTaskRun(MySite site, Product product, Filter filter)
    {
        var task = new Task(() =>
        {
            site.HomePage.Open();
            SearchSection.SearchProduct(filter.ShortSearchName);
            CheckProduct(product);
        });
        task.Start();
        return task;
    }

(Sergey Korol) #27

Если так, то хорошо. :wink:
Вопрос был задан, исходя из этого куска кода, глубоко не копая:

        private static Func<IWebDriver> GetDriver(BrowserType browserType)
        {
            switch (browserType)
            {
                case BrowserType.Firefox:
                    return () => new FirefoxDriver();
                case BrowserType.Chrome:
                    return () => new ChromeDriver("..\\..\\Drivers");
                case BrowserType.IE:
                    return () => new InternetExplorerDriver("..\\..\\Drivers");
                default:
                    return () => new FirefoxDriver();
            }

        }

Было бы неплохо запостить побольше тестовых примеров вашего творения.


(vmaximv) #28

Ну вы же понимаете, что на одной машине так делать нельзя?


(Рома Иовлев) #29

Работаю сейчас над тестовыми примерами.
Этот кусок кода только для упрощения, если вам просто нужно запустить в браузере, без настроек и прочее.
Типа дефолтные варианты
Но вы всегда можете передать Вике любой драйвер с любыми настройками


(Рома Иовлев) #30

Да, я же говорю не совсем по теме.
Просто можно иногда распаралелить некие действия для одного теста.
К примеру вы можете отдельным процессом запустить прекондишн допустим заполнения тестовой базы (или создание пользователя через админку или еще чего-то) и отдельным тест установив Wait в том месте теста где без этих тестовых данных уже никак. Может еще как-то можно применить
Я это не к тому чтобы тесты так запускать )


(Alex Shats) #31

Роман,
Укажите все полезные ссылки по вашему проекту (VIQA) пожалуйста.


(Рома Иовлев) #32
  1. Все новости о продукте и ссылки можно найти в группе вконтакте http://vk.com/viqatools (все что ниже описано можно найти в группе)
  2. Статья на Хабре. Обзорное описание продукта, его основных возможностей и концепций (с примерами)
  3. Код проекта на ГитХаб. С описанием разных способов установки. (в полной версии также есть примеры)
  4. Презентация проекта на SQA Days 15 (всего 20 минут) в формате сравнения с Yandex QA Tool
    Видео с конференции
    Слайды презентации

(Alex Shats) #33

Еще возник вопрос по поводу репортов выполнения тестов.
Есть ли какие то готовые решения что можно подключить и не тратить время на написание своего?
Напомню, речь о C#.


(Дмитрий Жарий) #34

Я в этом топике частично ответил: Логи работы WebDriver

По сути сейчас, одного и самого лучшего решения нет, по крайней мере для C# + WebDriver. Нужно писать самому и комбинировать существующие отдельные решения