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

Detox 排毒-如何在不使用expect的情况下检查元素是否存在,detox,Detox,有没有一种方法可以在不使用expect的情况下检查元素是否存在?现在,我必须将我的逻辑嵌套在try/catch块中,以控制测试流,以减轻在继续测试之前检查屏幕状态时出现的片状。我更希望能够使用if/else 提前感谢您的建议。这不是最优雅的解决方案,但我已使用以下方法来流式处理我的代码 在助手文件中,我创建了包装try/catch并返回true/false的函数: 例如: const expectToBeVisible = async (id) => { try { await

有没有一种方法可以在不使用expect的情况下检查元素是否存在?现在,我必须将我的逻辑嵌套在try/catch块中,以控制测试流,以减轻在继续测试之前检查屏幕状态时出现的片状。我更希望能够使用if/else


提前感谢您的建议。

这不是最优雅的解决方案,但我已使用以下方法来流式处理我的代码

在助手文件中,我创建了包装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 };
然后,当我执行依赖于该元素是否可见的测试时,我可以执行以下操作:

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
    }
  });

 ...
});

这并不是最好的解决办法,但在排毒功能具备“如果/否则”的能力之前,它在紧要关头就足够了

这不是最优雅的解决方案,但我使用了以下方法来流式生成代码

在助手文件中,我创建了包装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 };
然后,当我执行依赖于该元素是否可见的测试时,我可以执行以下操作:

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
    }
  });

 ...
});

这并不是最好的解决办法,但在排毒功能具备“如果/否则”的能力之前,它在紧要关头就足够了

这会有帮助的。它一定会把我现在拥有的清理干净。对于我必须实现的所有嵌套try/catch块,逻辑越来越难以跟踪。而且很难用一种不让测试总是通过的方式来构建它,这会有所帮助。它一定会把我现在拥有的清理干净。对于我必须实现的所有嵌套try/catch块,逻辑越来越难以跟踪。而且很难以一种不让测试始终处于通过状态的方式来构建它。