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

问题描述 投票:0回答:0

我有一个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?

先谢谢你

reactjs testing automated-tests e2e-testing testcafe
© www.soinside.com 2019 - 2024. All rights reserved.