Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Есть ли идеи по задачке фильтрации элементов.

webdriver
java
Теги: #<Tag:0x00007f7b643bb668> #<Tag:0x00007f7b643bb4d8>

#1

Задача следующая: проверить фильтрацию документов.
Имею таблицу, каждая строка отождествляет документ. Каждый столбец - свойство документа.
Нужно проверить фильтрацию документов по данным свойствам.
Так как документы постоянно меняются (их то удаляют, то создают всегда разные), то не хочу оперировать заранее заданными свойствами, а брать их скажем из первой строки до фильтрации, сохранять значения ее столбцов и передавать их (либо сразу все, либо по очереди) в фильтр, применять фильтр и смотреть, какие строки отображены в таблице в итоге, и соответствуют ли их столбцы тем, которые я указал в фильтре.

Думал сделать что-то типа того:

@FindAll({@FindBy(how = How.XPATH, using = "(//*[contains(@id, '-cave')])[1]"), @FindBy(how = How.XPATH, using ="//td[@class='imagecell z-listcell' and  @title='Требует согласования']"), @FindBy(how = How.XPATH, using = "(//div[@class='z-listcell-content'])[3]})"
List<WebElement> elementsBeforeFilter;

Затем в цикле проходиться по значениям этих элементов:

for (WebElement elem: elementsBeforeFilter){
          elem.getAttribute("attr");
}

Таким образом найдется три столбца, но ведь надо еще понять, что они относятся к первой строке. И вообще решение по-моему не лучшее.
Есть ли идеи и советы?


(rpwheeler) #2

А зачем всё эти проверки таблицы делать именно по запросам вебдрайвера? Я бы построил чтение/конверсию таблицы в определённый тип данных — список списков строк (список ‘строки таблицы’, каждая строка таблицы это тоже списочный тип, в который занесены значения из таблицы).

И потом уже по второму типу данных, преобразованному — проверки содержимого ячеек таблицы.

Ну, то есть, допустим, берём таблицу отсюда:
http://www.w3schools.com/html/html_tables.asp
HTML Table Example

“Читаем” и строим из неё данные:
((‘Number’, ‘First Name’, ‘Last Name’, ‘Points’),
(‘1’, ‘Eve’, ‘Jackson’, ‘94’),
(‘2’, ‘John’, ‘Doe’, ‘80’),
(‘3’, ‘Adam’, ‘Johnson’, ‘67’),
(‘4’, ‘Jill’, ‘Smith’, ‘50’))

И вот с этими данными уже работаем — в таком формате мы точно можем сказать что мы прочитали из первой строки, что в какой строке находится, удобно проверить что фильтр не вернул никаких “лишних” результатов и т.д. и т.п.


#3

спасибо!