WebdriverIO:如果 waitForDisplayed() returns false,则测试不会失败

WebdriverIO: Have waitForDisplayed() not fail a test if it returns false

我在 Javascript 中使用 WebdriverIO 和 Appium 来测试 Android/iOS 个应用程序。

我有一个欢迎屏幕,有时会在加载屏幕后出现。以下代码是我目前用来跳过欢迎屏幕的代码。

if(welcomeScreenTitle.waitForDisplayed()){
   skipWelcomeScreenButton.click();
}

我遇到的问题是,如果 waitForDisplayed() 超时(意味着这次屏幕没有出现),它就无法通过测试。我有办法做到这一点吗?

我试过使用

browser.wait(10000);
if(welcomeScreenTitle.isDisplayed()){
   skipWelcomeScreenButton.click();
}

但加载屏幕时间因连接速度而异(因此可能会更长),如果欢迎屏幕在 10 秒之前出现,我不想等待整整 10 秒(因为大多数时候它确实会出现)。

一种更简单的方法是在您的代码周围添加一个 try catch 块,这样您就可以抑制抛出的错误并继续执行。

try {
browser.waitForDisaplyed(10000);
if(welcomeScreenTitle.isDisplayed()){
   skipWelcomeScreenButton.click();
}
} catch (error) {
console.log('Welcomescreen is not displayed.')
}