作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有一种方法可以在不使用 Detox 的情况下检查元素是否存在?现在,我必须将我的逻辑嵌套在 try/catch block 中以控制测试流程,以减轻在继续测试之前检查屏幕状态时的不稳定。我更愿意使用 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
}
});
...
});
这不是最好的解决方案,但在 Detox 提出 if/else 的能力之前,它在紧要关头就足够了。
关于Detox - 如何在不使用 expect 的情况下检查元素是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53245252/
我是一名优秀的程序员,十分优秀!