使用排毒功能测试与超时相关的测试,例如弹出窗口/工具提示等

问题描述

我已经使用detox了一段时间,但是升级17.5.+之后,我开始遇到Popups测试的问题。我找不到有关堆栈溢出和排毒问题的有用信息。

以下是问题:我进行了一项测试,以检查是否显示了正确的弹出窗口。看起来像:

it('expect to see "Answer correct" popup',async () => {
  await openQuestionnaire('theory_questionnaire_learn_button');

  await scroll('questionnaire_scroll_view',150);

  await element(by.id('select_1_button')).tap();

  await element(by.id('questionnaire_answer_button')).tap();

  // @ts-ignore
  await expect(element(by.id('questionnaire_simple_popup'))).toBeVisible();
  // @ts-ignore
  await expect(element(by.id('questionnaire_simple_popup'))).toHaveLabel('correct');

  await delay(500);

  // @ts-ignore
  await expect(element(by.id('questionnaire_simple_popup'))).toNotExist();
});

此操作的背景:点击问卷调查_answer_button后,将显示弹出窗口。它在500ms内可见,然后消失。对于这500毫秒,我使用的是setTimeout({ () => dismiss() },500)

弹出窗口在模拟器上可见,但是我的测试失败,并显示Test Failed: No elements found for “MATCHER(identifier: == “questionnaire_simple_popup”)”

检查层次结构我在那里找不到此元素。也许其他人已经面临这个问题并知道解决方案了?

解决方法

如果找不到该标识符,则表示该标识符未使用本机视图的可访问性标识符正确设置。与弹出式开发人员联系,以确认testID是否已正确转发到本机视图。

,

好的,几次尝试后我发现了什么。超时从500ms增加到3000ms后,它开始工作。 2500仍然失败,2750尚未尝试。关于匹配器。 by.idby.text也可以使用。

所以原因可能是超时时间。