Невозможно найти элемент в гибридном приложении с помощью Appium с Java для мобильного устройства Android - PullRequest
0 голосов
/ 23 мая 2018

Я новичок в appium и пытаюсь автоматизировать приложение.Мой сценарий на Java не может определить поле текстового поля.

 MobileElement code =  driver.findElement(By.id("some-id"));

 WebDriverWait wait2 = new WebDriverWait(driver, 5);
 wait2.until(ExpectedConditions.elementToBeClickable(code));

 code.click();

  code.sendKeys("abc"); 

В консоли появляется следующая ошибка.

23 мая 2018 г. 17:34:39 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Обнаружен диалект: OSS Исключение в потоке "main" org.openqa.selenium.NoSuchElementException: элемент не может быть найден на странице с использованием заданных параметров поиска.(ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о трассировке стека). Длительность или время ожидания команды: 0 миллисекунд. Чтобы получить документацию по этой ошибке, посетите: http://seleniumhq.org/exceptions/no_such_element.html Информация о сборке: версия: '3.12.0', версия: '7c6e0b3', время: '2018-05-08T14: 04: 26.12Z' Системная информация: хост: 'N0PCINF651RBHT', ip: '100.118.94.148', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_71' Информация о драйвере: io.appium.java_client.android.AndroidDriver Capabilities {appActivity: nz.co.mcom.phone.login.Spla ..., appPackage: com.fiserv.touchbanking, databaseEnabled: false, требуемый: {appActivity: nz.co.mcom.phone.login.Spla ..., appPackage: com.fiserv.touchbanking, имя устройства: Samsung, имя платформы: android, платформа версия: 7.0},deviceManufacturer: samsung, deviceModel: SM-G950F, deviceName: ce03171399d964fa0c, deviceScreenSize: 1440x2960, deviceUDID: ce03171399d964fa0c, javascriptEnabled: true, locationContextEnabled: false, платформа LINConne: платформа: LINUXUne: Платформа: LINUXUne: платформа: LINUXUne: платформа: LINUXUne: платформа: LINUXUnEnEX, platformVersion: 7.0, принимаетScreenshot: true, предупреждения: {}, webStorageEnabled: false} Идентификатор сеанса: 58013355-1b58-4c8d-895f-7a57144e0595 *** Информация об элементе: {Using = id, value = com.fiserv.touchbanking:идентификатор.reflect.Constructor.newInstance (Constructor.java:422) в org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:214) в org.openqa.selenium.remote.ErrorHandler.throwIfj (.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44) в org.openqa.selenium.remote.HttpCommandExecutor.execute (HttpCommandExecutor.java:158) в io.appium.java_client.remote.AppiumCommandExecutor.exj:12. Org) (приложение) (приложение)selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:543) в io.appium.java_client.DefaultGenericMobileDriver.execute (DefaultGenericMobileDriver.java:42) в io.appium.java_client.irij.riu (ipp).appium.java_client.android.AndroidDriver.execute (AndroidDriver.java:1) при org.openqa.selenium.remote.RemoteWebDriver.findElement (RemoteWebDriver.java:317) в io.appium.java_client.DefaultGenericMobileDriver.findElement (DefaultGenericMobileDriver.java: 62) в io.appium.java_client.AppiumDriver.findElement (AppiumDriver.java:1) в io.appium.java_client.android.AndroidDriver.findElement (AndroidDriver.java:1) в org.openqa.selenium.remote.Remote.findElementById (RemoteWebDriver.java:363) в io.appium.java_client.DefaultGenericMobileDriver.findElementById (DefaultGenericMobileDriver.java:70) в io.appium.java_client.AppiumDriver.findElementById (AppiumDriver.java:1) в io.appium.java_client.android.Aindava.rig (рис.).selenium.By $ ById.findElement (By.java:188) в org.openqa.selenium.remote.RemoteWebDriver.findElement (RemoteWebDriver.java:309)в io.appium.java_client.DefaultGenericMobileDriver.findElement (DefaultGenericMobileDriver.java:58) в io.appium.java_client.AppiumDriver.findElement (AppiumDriver.java:1) в io.appium.jment.Driver.Ajind.Aj.jav: 1) at mytests.LaunchTouchbankingApp.main (LaunchTouchbankingApp.java:50)

Журналы начальной загрузки на сервере Appium выглядят следующим образом: -

[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Получена командатипа ACTION [AndroidBootstrap] [BOOTSTRAP LOG] [отладка] Полученное действие команды: find [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Поиск 'com.fiserv.touchbanking: id / AppCodeTextBox' с использованием 'ID' с contextId: ''множественный: false

Ваша помощь будет весьма полезна.спасибо.

1 Ответ

0 голосов
/ 23 мая 2018

Похоже, что возвращенное исключение просто потому, что элемент не был найден в пользовательском интерфейсе в момент поиска.

Имейте в виду, что в размещенном вами фрагменте будет выполняться поиск элемента, идентифицируемого идентификатором some-id, как только будет выполнена первая строка, а не позже, когда вы попытаетесь нажать наэлемент.Вы выполняете какое-то неявное ожидание этого driver.findElement(By.id("some-id"));?Если нет, уверены ли вы, что элемент доступен, когда вы впервые пытаетесь найти его в пользовательском интерфейсе?

Чтобы убедиться, что элемент действительно доступен, вы можете проверить, появляется ли он в источнике страницы непосредственно перед вами.делаете ваш поискВ Java вы можете сделать это так:

System.out.println(driver.getPageSource());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...