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;
}
И обновляем наш тест, который стал еще более читабельным:

