Невозможно щелкнуть веб-элемент драйвером флиптера, который покрыт другим элементом. - PullRequest
0 голосов
/ 18 февраля 2020

Я попытался протестировать веб-просмотр в приложении флаттера, используя драйвер приложения флаттера, и столкнулся с проблемой: в веб-просмотре у меня есть текст, который помещается в две строки. Из-за этого размещение текста перекрывается другим элементом. Я попробовал 3 подхода:

1.appium driver: mouse.moveTo затем mouse.click. Решение с mouse.moveTo затем mouse.click не сработало, потому что appium нужен другой параметр, называемый продолжительностью, это не входит в параметры в нашем appium_driver.

2. Использовал инспектор флаттера, чтобы найти элементы в веб-представлении - решение не удалось, потому что эти веб-просмотры являются внешними и не были покрыты никаким наложением флаттера.

3. Щелчок по границам Получил все объекты из веб-просмотра с помощью TESTWorld (). AppiumDriver.pageSource. Обнаружил, что у нас есть xml со всеми объектами в веб-просмотре со свойствами в виде границ, текста. Составил список из 3 объектов из строки «MyString» и щелкнул по ним один за другим методом click () из appium_driver. Второй элемент «MyString» является интерактивным, appium может щелкнуть по нему, но первый экземпляр этой строки состоит из двух строк, поэтому этот элемент является частью другого большого элемента, поэтому appium_driver не может щелкнуть по нему.

Может кто знает другой подход?

1 Ответ

0 голосов
/ 19 февраля 2020

Из-за этого размещение текста покрывается другим элементом

В конкретном случае это звучит как проблема AUT. Appium использует WebDriver API для тестирования WebView, и ожидается, что он не сможет взаимодействовать с перекрывающимся элементом.

Если нет способа обратиться и исправить это в приложении, вы можете попробовать JS отправить действие щелчка (так же, как в Webdriver):

WebElement textElement = driver.findElement(...);
JavascriptExecutor jsEx = (JavascriptExecutor)driver;
jsEx.executeScript("arguments[0].click();", textElement);
...