найти ВСЕ строки в таблице, даже если вам нужно прокрутить таблицу вниз - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь написать тест пользовательского интерфейса для учебного приложения Vaadin 8, который будет подсчитывать строки в таблице.Использование селенидов и селекторов CSS для теста.

Таблица прокручивается и создается следующим образом:

override fun init(vaadinRequest: VaadinRequest) {
    layout = VerticalLayout()
    grid = Grid(Customer::class.java)
    grid.id = "table.customers"
    grid.setColumns("firstName","lastName","email")
    layout.addComponents(grid)

    populateGrid()

    this.content = layout
}

private fun populateGrid() {
    val customers = customerService.findAll()
    grid.setItems(customers)
}

Этот тест здесь:

@Test
fun displaysAllData(){
    //given
    val expectedCustomers = customerService.findAll()
    open("/customers")

    //when
    val displayedCustomers =  $(byId("table.customers"))
            .find("tbody:first-of-type")
            .findAll("tr")

    displayedCustomers.forEach{ println(it)}

    //then
    assertThat(displayedCustomers.size).isEqualTo(expectedCustomers.size)
}

дает мне

<tr class="v-grid-row v-grid-row-focused v-grid-row-has-data">Bernard Nilsen bernard@nilsen.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Jaydan Jackson jaydan@jackson.com</tr>
<tr class="v-grid-row v-grid-row-has-data">Solomon Olsen solomon@olsen.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Elvis Olsen elvis@olsen.com</tr>
<tr class="v-grid-row v-grid-row-has-data">Rene Carlsson rene@carlsson.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Remington Andersson remington@andersson.com</tr>
<tr class="v-grid-row v-grid-row-has-data">Ann Andersson ann@andersson.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Lara Martin lara@martin.com</tr>
<tr class="v-grid-row v-grid-row-has-data">Jamar Olsson jamar@olsson.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Gunner Karlsen gunner@karlsen.com</tr>
<tr class="v-grid-row v-grid-row-has-data" displayed:false></tr>

org.opentest4j.AssertionFailedError: 
Expecting:
 <11>
to be equal to:
 <30>
but was not.
Expected :30
Actual   :11

Я все же посчитал вручную, и в этой таблице 30 строк, если вы прокрутите ее.

Я также попытался добавить Thread.sleep после open(...) в случае, если модульный тест слишком нетерпелив и не читает всю таблицу.

Это селекторы CSS.Как получить все строки в таблице, отображаемые или нет?

1 Ответ

2 голосов
/ 04 апреля 2019

Реализация Grid в браузере основана на подкомпоненте, который называется Escalator. Идея Escalator состоит в том, чтобы повторно использовать элементы строки DOM. То есть когда вы прокручиваете Grid, исчезающая строка перемещается на другой конец и заполняется новыми данными (которые лениво загружаются с сервера в соответствии с некоторыми правилами). Таким образом, в браузере «все строки» новее.

...