У меня странная проблема с webdriverio / appium при попытке протестировать приложение iOS. Приложение имеет WebView с кнопкой «Refre sh». Когда я пытаюсь проверить эту кнопку, я получаю сообщение об ошибке «не отображается» (см. Код ниже).
it('should have the Refresh button', () => {
WebViewScreen.waitForWebsiteLoaded();
// Verify that Refresh button is displayed
WebViewScreen.switchToContext(CONTEXT_REF.WEBVIEW);
const button = $('button=Refresh');
expect(button).toBeDisplayed();
WebViewScreen.switchToContext(CONTEXT_REF.NATIVE);
});
Обратите внимание, что я переключаю контекст на WEBVIEW перед проверкой кнопки. Глядя на журналы Appium, запрос найти кнопку ($('button=Refresh')
) возвращает 404. Попробовал другой селектор: ['button[data-test="refresh-button"]']
, но не go. Я даже поставил browser.debug () и запросил в REPL - все еще 404 - хотя я физически вижу кнопку на экране!
Я знаю, что мои настройки webdriverio / appium хороши, потому что точно такой же код работает для другого экрана iOS с WebView и кнопкой - единственное отличие - это имя кнопки.
Я также исключил возможность того, что мой селектор неверен, перейдя на отдельную веб-страницу и протестировав ее. кнопка - без ошибок в этом случае! Вот код автономной веб-страницы - единственное отличие заключается в отсутствии вызовов переключения контекста:
it('should have the Refresh button', () => {
browser.url('https://example.site.com/');
// Verify that Refresh button is displayed
const button = $('button=Refresh')
expect(button).toBeDisplayed();
});
Есть идеи, как это отладить? Есть ли какие-то нюансы при переходе в контекст WEBVIEW, которые мне не хватает?