【发布时间】:2019-04-14 04:13:13
【问题描述】:
有没有办法在不使用 Detox 的情况下检查元素是否存在?现在,我不得不将我的逻辑嵌套在 try/catch 块中,以控制测试流程以减轻不稳定,因为它会在继续测试之前检查屏幕的状态。我宁愿能够使用 if/else。
提前感谢您的任何建议。
【问题讨论】:
标签: detox
有没有办法在不使用 Detox 的情况下检查元素是否存在?现在,我不得不将我的逻辑嵌套在 try/catch 块中,以控制测试流程以减轻不稳定,因为它会在继续测试之前检查屏幕的状态。我宁愿能够使用 if/else。
提前感谢您的任何建议。
【问题讨论】:
标签: detox
不是最优雅的解决方案,但我使用以下方法来简化我的代码。
在帮助文件中,我创建了包装 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
}
});
...
});
这不是最好的解决方案,但在 Detox 提出具有 if/else 的能力之前,它可能就足够了。
【讨论】: