Kotlin 查找网格中的所有行,即使您必须在网格中向下滚动

Kotlin 查找网格中的所有行,即使您必须在网格中向下滚动,kotlin,vaadin,ui-testing,vaadin8,selenide,Kotlin,Vaadin,Ui Testing,Vaadin8,Selenide,我正在尝试为Vaadin8教程应用程序编写一个UI测试,它将统计表中的行数。使用Selenide和CSS选择器进行测试 该表是可滚动的,创建方式如下: override fun init(vaadinRequest: VaadinRequest) { layout = VerticalLayout() grid = Grid(Customer::class.java) grid.id = "table.customers" grid.setColumns("fir

我正在尝试为Vaadin8教程应用程序编写一个UI测试,它将统计表中的行数。使用Selenide和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
伯纳德·尼尔森bernard@nilsen.com 杰丹·杰克逊jaydan@jackson.com 所罗门奥尔森solomon@olsen.com 埃尔维斯·奥尔森elvis@olsen.com 雷内·卡尔松rene@carlsson.com 雷明顿·安德森remington@andersson.com 安·安德森ann@andersson.com 劳拉·马丁lara@martin.com 贾马尔·奥尔森jamar@olsson.com 炮手卡尔森gunner@karlsen.com org.opentest4j.AssertionFailedError: 期望: 等于: 但事实并非如此。 预期:30 实际:11 不过,我确实用手数过了,如果你翻阅一下,那张表有30行

我还尝试在
打开(…)
之后抛出
线程。sleep
以防单元测试有点不耐烦,无法读取完整的表


这些是CSS选择器。如何获取表中的所有行(无论是否显示?

浏览器中的网格实现基于名为“自动扶梯”的子组件。自动扶梯的思想是重用行DOM元素。也就是说,当您滚动网格时,行将移动到另一端,并填充新数据(根据某些规则从服务器延迟加载)。所以网格的“所有行”在浏览器中都是较新的