Skip to content

Selenium и Page Element паттерн

Page elements – также является очень важным паттерном для автотестов, суть которого заключается в том чтобы создавать обертки для нашего элемента (IWebElement) или набора элементов на странице, которые описывают более привычный для пользователя вид, такой как кнопки, ссылки, таблицы, меню и так далее.

Например на странице результатов в Wikipedia мы можем видеть следующие элементы:

Но методы FindElement или FindElements возвращают нам объекты типа IWebElement, которым сложно описать такой элемент на странице, как “Menu”.

В предыдущих статьях мы описывали работу с таблицей, на странице результатов (обновил ее в соответствии с англоязычной версией сайта):

Вот так это выглядит у нас в автотесте:

Как мы знаем о паттернах, они помогают решать определенные проблемы, так вот если нам нужно будет эту таблицу использовать еще в других тестах, то в будущем ее будет очень сложно поддерживать, а также у нас будут очень громоздкие и не читабельные автотесты.

Попробуем решить эту проблему переместив код по созданию и работе с этой таблицей в отдельный класс MicrosoftFinancialTable.cs с конструктором принимающим значение объекта драйвера:

 

Как видно класс мы создаем по такому же принципу как и обобьет страницы (паттерн Page Object)

После чего создаем метод GetRows, который возвращает все строки нужной нам таблицы и переносим в него логику из теста.

Также для удобства можем создать еще один метод, который будет нам искать строку по финансовому году:

public MicrosoftFinancialTableRow GetRowByYear(string year)
{
    var row = GetRows().FirstOrDefault(r => r.YearCell.Text == year);
    if (row == null)
    {
        throw new NotFoundException($"Can't find '{year}' table row!");
    }
    return row;
}

И обновляем наш тест, который стал еще более читабельным:

Leave a Reply

Your email address will not be published. Required fields are marked *