排毒 - 如何在不使用期望的情况下检查元素是否存在

All*_*son 1 detox

有没有一种方法可以检查元素是否存在,而无需在 Detox 中使用 expect?现在,我不得不将我的逻辑嵌套在 try/catch 块中以控制测试流程以减轻片状,因为它在继续测试之前检查屏幕的状态。我更愿意使用 if/else。

在此先感谢您的任何建议。

And*_*rew 5

不是最优雅的解决方案,但我使用以下内容来简化我的代码。

在帮助文件中,我创建了包装 try/catch 并返回 true/false 的函数:

例如:

const expectToBeVisible = async (id) => {
  try {
    await expect(element(by.id(id))).toBeVisible();
    return true;
  } catch (e) {
    return false;
  }
};

module.exports = { expectToBeVisible };
Run Code Online (Sandbox Code Playgroud)

然后,当我执行依赖于该元素是否可见的测试时,我可以执行以下操作:

import { expectToBeVisible } from './helpers';

describe('Test', () => {

  ...

  it('If button is visible do X else do Y', async () => {
    let buttonVisible = await expectToBeVisible('button');

    if (buttonVisible) {
      // do something with that button
    } else {
      // do something else as the button isn't visible
    }
  });

 ...
});
Run Code Online (Sandbox Code Playgroud)

这不是最好的解决方案,但在 Detox 提出具有 if/else 的能力之前,它可能就足够了。