reactjs - Testcafe - 如何迭代不同元素类型的选择器?

标签 reactjs testing automated-tests e2e-testing testcafe

我有一个配置驱动的 React 地址表单,每个元素可以是文本 <input><select>落下。当尝试使用下面的代码填写表单时,文本输入已成功填充,但找不到选择元素。如果我从循环中删除选择元素并随后单独选择它们,则效果很好。 MOCKS.deliveryAddress值只是字符串。

  const addressFields = {
    addressLine2: Selector('[data-testid="input-addressLine2"]'),
    addressLine1: Selector('[data-testid="input-addressLine1"]'),
    addressLine3: Selector('[data-testid="input-addressLine3"]'),
    addressLine4: Selector('[data-testid="input-addressLine4"]'),
    postalCode: Selector('[data-testid="input-postalCode"]'),
  };

  const fieldConfig = {
    addressLine1: 'text',
    addressLine2: 'text',
    addressLine3: 'text',
    addressLine4: 'select',
    postalCode: 'text',
  };

  const enterAddress = async () => {
    await Promise.all(
      Object.keys(addressFields).map(async (field) => {
        if (fieldConfig[field] === 'text') {
          if (MOCKS.deliveryAddress[field]) {
            await t.typeText(
              addressFields[field],
              MOCKS.deliveryAddress[field],
              {
                replace: true,
              },
            );
          }
        } else {
          await t.click(addressFields[field]);
          await t.click(
            addressFields[field]
              .find('option')
              .withText(MOCKS.deliveryAddress[field]),
          );
        }
      }),
    );
  };
}

我收到错误 1) The element that matches the specified selector is not visible.

我在处理 map 内的选择器时做错了什么吗? ?

提前致谢!

最佳答案

根据 TestCafe documentation ,如果元素不具有 display: nonevisibility: hide CSS 属性并且具有非零宽度和高度,则该元素被视为“可见”。使用浏览器开发工具来调查测试中使用的元素的属性。

关于reactjs - Testcafe - 如何迭代不同元素类型的选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62435958/

相关文章:

node.js - 使用react框架时node_modules文件过多

Android React Native Module 已经注册

css - 测试网站的最佳实践

node.js - 在基于 jsdom 的测试中调用 setState 导致 "Cannot render markup in a worker thread"错误

python - 将覆盖率和 codecov.io 与 pytest 单元测试和定制内联测试结合使用

.net - 如何通过传递用户名和密码从身份服务器获取访问 token ?

javascript - Jest 检测到以下 2 个打开的句柄可能会阻止 Jest 退出 :

reactjs - 如何找到.babelrc?

reactjs - 当 'action'/'runInAction'在mobx react中真的需要

java - 尽管抛出了预期的异常,但 JUnit 测试失败