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

Ну тогда WebDriver + MSTest :smile: Меньше времени потратишь на разборки с фреймворками, больше на тесты.
Возможно @dzhariy что-то ещё подскажет, он на C# автоматизирует много.
Также почитай материалы на форуме, может найдёшь что-то конкретно для себя

Добрый день Алекс,

Я разработчик VIQA. На счет Вики вам не нужно специально читать что-то про HTML elements (кроме того там используются VIElements, что на первый взгляд не сильно отличается от HTML Elments).
Они интуитивно понятны и как раз таки дают возможность не изучать хитросплетения WebDriver а писать на “почти человеческом” языке.
К тому же Вика специально создана для кастомизации под “свой” проект. В этом ее основное отличие от тех же HtmlElements от Yandex или Bumblbee
Попробую привести еще один довод в пользу Вики. я сейчас активно слежу за ее развитию и стараюсь собирать максимум отзывов и предложений, чтобы улучшить ее, так что у вас не будет проблем поддержкой, наоборот я буду крайне благодарен вам за отзывы )
“за новый VIQA. Но тут встал вопрос с C#.”
А в чем проблема с C#?

И на счет изучения (вхождения в фреймворк) Вика специально разрабатывалась так, чтобы ее можно было использовать с минимальными знаниями C#. Все базовые функции работаю сразу. Но если вам захочется копнуть поглубже, то и тут Вика предоставит вам широкие возможность к настройки всего что захотите )

Ну и бонус в подарок встроенное логирование всех действий в удобном вам виде )

MsTest не советую. Уж лучше тогда NUnit :wink:

Проблемы с C# как раз нет. Я имел ввиду что начал рассматривать HtmlElements, но поняв что он для Java, решил что HtmlElements мне не подходит. VIQA напротив - поддерживает C#.

Почему не советуете писать в MsTest?

ТС тут рядом заводил тему насчет работы с таблицами. Взглянув на исходники вики по линку выше, так и не нашел грида. Или он спрятан вне htmlelements? Думаю, что автор очень расстроится, узнав об этом. :smiley:

Т.е. в тему отзывов и предложений: как минимум - добавить элемент таблицы, как максимум - внедрить cаппорт remote execution.

NUnit обладает большими возможностями, по работе со входными данными, Много разных вариантов построения пересечений из входных данных Ну и на конец возможность использовать в качестве входных данных любой ваш метод (ValueSource) - дает вам безграничные возможности. Можете хоть свой генератор входных данных и их пересечений написать (что я кстати и сделал в своих проектах).
Вам не нужно подсоединятся к внешним файлам или базам данных как в MSTest
UnitTest Session Решарпера с тестами Nunit более корректно работает. отображает результаты фильтрует и прочее.
NUnit - это опен сорс и ребята действительно радеют за свой продукт. MSTest постоянно отстает на несколько шагов по новинкам. Собственно даже в самом Микромягком это признали сделав одновременную встроенную поддержку Nunit и MSTest с 2012-ой студии )

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

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

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

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

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

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

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

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;
    }

Если так, то хорошо. :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();
            }

        }

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

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

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

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

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

  1. Все новости о продукте и ссылки можно найти в группе вконтакте VIQA | VK (все что ниже описано можно найти в группе)
  2. Статья на Хабре. Обзорное описание продукта, его основных возможностей и концепций (с примерами)
  3. Код проекта на ГитХаб. С описанием разных способов установки. (в полной версии также есть примеры)
  4. Презентация проекта на SQA Days 15 (всего 20 минут) в формате сравнения с Yandex QA Tool
    Видео с конференции
    Слайды презентации

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

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

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