如何在TestCafe中单击未渲染的虚拟元素

ArrayKnight

我正在使用react-virtualized提供一长串(1000多个)可供选择的项目。我正在尝试建立一个端到端测试,该测试要求单击当前未呈现的元素之一。

通常,我只会使用类似以下内容的东西:

await t.click(
    ReactSelector('ListPage')
        .findReact('ListItem')
        .nth(873) // or .withText(...) or .withProps(...)
)

但是,由于仅ListItem渲染的一小部分,因此TestCafe无法找到所需的元素。

我一直在尝试找出如何使用TestCafe的ClientFunction滚动列表容器,以便ListItem呈现所需的内容。

但是,我遇到了一些问题:

  • 是否有共享的方式Selector进入ClientFunction并修改DOM元素的scrollTop的?还是我必须直接通过DOM重新查询元素?
  • 由于ListItems是不同的高度,因此滚动位置不是索引x项目高度的简单计算如何在此功能内不断更新/滚动,直到Selector可见所需的内容?
aleks-pro

有没有一种方法可以将Selector共享到ClientFunction中并修改DOM元素的scrollTop?

还有就是把一种方式Selector进入Client Function请参考TestCafe文档中的示例。

如何在此功能内保持更新/滚动,直到显示所需的选择器?

您可以使用TestCafeexist属性检查元素是否已呈现。下面的示例演示了该方法:

import { Selector } from 'testcafe';
    fixture`Getting Started`.page('https://bvaughn.github.io/react-virtualized/#/components/List')

test('Test 1', async t => {
    const dynamicRowHeightsInput = Selector('._1oXCrgdVudv-QMFo7eQCLb');
    const listItem               = Selector('._113CIjCFcgg_BK6pEtLzCZ');
    const targetItem             = listItem.withExactText('Tisha Wurster');

    await t.click(dynamicRowHeightsInput);

    while (!await targetItem.exists) {
        const currentLastRenderdItemIndex = await listItem.count -1;
        const currentLastRenderdItemText  = await listItem.nth(currentLastRenderdItemIndex).textContent;
        const currentLastRenderdItem      = await listItem.withExactText(currentLastRenderdItemText);

        await t.hover(currentLastRenderdItem);
    }

    await t
        .hover(targetItem)
        .click(targetItem);

    await t.debug();
});

为了滚动列表容器,我使用了hover将最后一个呈现listItem为目标元素的动作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在react中渲染嵌套元素

来自分类Dev

如何在 Reactjs 中渲染 html 元素?

来自分类Dev

如何在Blazor中单击按钮渲染组件?

来自分类Dev

如何在反应中渲染元素n次

来自分类Dev

如何在功能组件中渲染嵌套元素?

来自分类Dev

你如何在 ng-template 中渲染 ContentChildren 元素?

来自分类Dev

如何等待元素在 TestCafe 中消失?

来自分类Dev

如何在Capybara中测试元素是否可单击?

来自分类Dev

AngularJS:如何在角度中隐藏单击的元素?

来自分类Dev

Python Selenium如何在iframe中单击元素?

来自分类Dev

如何在WinJS的Repeater元素中绑定单击事件?

来自分类Dev

如何在AngularJs中删除单击事件的元素焦点

来自分类Dev

如何在Robot Framework Selenium中单击元素(html标记)

来自分类Dev

如何在 ngFor 中单击元素 html 以添加 css 类?

来自分类Dev

如何在可可中获取鼠标单击事件元素

来自分类Dev

如何在testcafe中模拟Date()?

来自分类Dev

不确定如何在react-native中单击按钮来渲染此组件

来自分类Dev

如何在edittext上隐藏虚拟键盘,请单击

来自分类Dev

如何获取未使用javascript渲染的dom元素?

来自分类Dev

元素未单击[硒]

来自分类Dev

如何在单击链接之前找到元素?

来自分类Dev

如何在单击事件期间淡入元素?

来自分类Dev

如何在React Class渲染方法中为元素提供动态className

来自分类Dev

如何在纯JavaScript中检查元素颜色是否等于其背景颜色(渲染后)?

来自分类Dev

如何在Vue.js中动态渲染svg形状元素的数量?

来自分类Dev

如何在纯JavaScript中检查元素颜色是否等于其背景颜色(渲染后)?

来自分类Dev

我如何在加载数据时在 react-native FlatList 中渲染 isLoading 元素

来自分类Dev

如何动态渲染网格中的元素

来自分类Dev

如何在单击功能上重新渲染包含的组件?

Related 相关文章

  1. 1

    如何在react中渲染嵌套元素

  2. 2

    如何在 Reactjs 中渲染 html 元素?

  3. 3

    如何在Blazor中单击按钮渲染组件?

  4. 4

    如何在反应中渲染元素n次

  5. 5

    如何在功能组件中渲染嵌套元素?

  6. 6

    你如何在 ng-template 中渲染 ContentChildren 元素?

  7. 7

    如何等待元素在 TestCafe 中消失?

  8. 8

    如何在Capybara中测试元素是否可单击?

  9. 9

    AngularJS:如何在角度中隐藏单击的元素?

  10. 10

    Python Selenium如何在iframe中单击元素?

  11. 11

    如何在WinJS的Repeater元素中绑定单击事件?

  12. 12

    如何在AngularJs中删除单击事件的元素焦点

  13. 13

    如何在Robot Framework Selenium中单击元素(html标记)

  14. 14

    如何在 ngFor 中单击元素 html 以添加 css 类?

  15. 15

    如何在可可中获取鼠标单击事件元素

  16. 16

    如何在testcafe中模拟Date()?

  17. 17

    不确定如何在react-native中单击按钮来渲染此组件

  18. 18

    如何在edittext上隐藏虚拟键盘,请单击

  19. 19

    如何获取未使用javascript渲染的dom元素?

  20. 20

    元素未单击[硒]

  21. 21

    如何在单击链接之前找到元素?

  22. 22

    如何在单击事件期间淡入元素?

  23. 23

    如何在React Class渲染方法中为元素提供动态className

  24. 24

    如何在纯JavaScript中检查元素颜色是否等于其背景颜色(渲染后)?

  25. 25

    如何在Vue.js中动态渲染svg形状元素的数量?

  26. 26

    如何在纯JavaScript中检查元素颜色是否等于其背景颜色(渲染后)?

  27. 27

    我如何在加载数据时在 react-native FlatList 中渲染 isLoading 元素

  28. 28

    如何动态渲染网格中的元素

  29. 29

    如何在单击功能上重新渲染包含的组件?

热门标签

归档