Appium iOS находит тысячи элементов до того, как щелкнет, замораживая тест

В моем приложении есть страница с наложенным на нее учебником. Я хочу, чтобы appium просто касался экрана, чтобы избавиться от наложения, а затем продолжал проводить тесты. По какой-то причине команда касания, которую я отправляю, никогда не выполняется, и время проверки истекает. Я явно не жду более 2 секунд, чтобы инициировать касание, и, насколько я могу судить, касание отправлено, но просто не происходит.

Благодарим вас за любую помощь, которую вы можете оказать по этому вопросу. Я уже пытаюсь работать с моими разработчиками над этим, но пока мы не смогли придумать решение.

Журналы Appium (это момент, когда проект appium запускается на экране с оверлеем и несколькими пользователями):

[debug] [JSONWP Proxy] Got response with status 200: {"status":0,"id":"446B2970-66EA-4795-846E-250B55EFABC0","value":"","sessionId":"C0E25E26-64C1-4E83-BEB5-5CA7CE029299"}
[JSONWP Proxy] Replacing sessionId C0E25E26-64C1-4E83-BEB5-5CA7CE029299 with 83022946-db67-4a8c-bdbe-4b1f203a2763
[HTTP] <-- POST /wd/hub/session/83022946-db67-4a8c-bdbe-4b1f203a2763/element/446B2970-66EA-4795-846E-250B55EFABC0/click 200 548 ms - 118 
[HTTP] --> POST /wd/hub/session/83022946-db67-4a8c-bdbe-4b1f203a2763/touch/perform {"actions":[{"action":"tap","options":{"x":0.5,"y":0.5,"count":1}},{"action":"release"}]}
[debug] [MJSONWP] Calling AppiumDriver.performTouch() with args: [[{"action":"tap","options":{"x":0.5,"y":0.5,"count":1}},{"action":"release"}],"83022946-db67-4a8c-bdbe-4b1f203a2763"]
[debug] [XCUITest] Executing command 'performTouch'
[debug] [XCUITest] Received the following touch action: tap(options={"x":0.5,"y":0.5,"count":1})-release
[debug] [XCUITest] Found matching gesture: tap
[debug] [JSONWP Proxy] Proxying [POST /wda/tap/0] to [POST http://localhost:8100/session/C0E25E26-64C1-4E83-BEB5-5CA7CE029299/wda/tap/0] with body: {"x":0.5,"y":0.5}
[BaseDriver] Shutting down because we waited 60 seconds for a command
[Appium] Closing session, cause was 'New Command Timeout of 60 seconds expired. Try customizing the timeout using the 'newCommandTimeout' desired capability'
[Appium] Removing session 7d24454e-3b9f-434c-a43a-d1f301b1802f from our master session list
[XCUITest] Shutting down sub-processes
[debug] [XCUITest] Found WDA derived data folder: '/Users/jessefish/Library/Developer/Xcode/DerivedData/WebDriverAgent-brdadhpuduowllgivnnvuygpwhzy'
[XCUITest] Setting '755' permissions to '/Users/jessefish/Library/Developer/Xcode/DerivedData/WebDriverAgent-brdadhpuduowllgivnnvuygpwhzy/Logs/Test/Attachments' folder
[debug] [XCUITest] Found WDA derived data folder: '/Users/jessefish/Library/Developer/Xcode/DerivedData/WebDriverAgent-dikkwtrisltbeobjmfvpthwwekvs'
[XCUITest] Setting '755' permissions to '/Users/jessefish/Library/Developer/Xcode/DerivedData/WebDriverAgent-dikkwtrisltbeobjmfvpthwwekvs/Logs/Test/Attachments' folder
[debug] [XCUITest] Not clearing log files. Use `clearSystemFiles` capability to turn on.
[debug] [iOSLog] Stopping iOS log capture

person Jesse Fish    schedule 28.06.2017    source источник
comment
Можете добавить логи? С этой информацией сложно дать ответ.   -  person Harish Talanki    schedule 29.06.2017


Ответы (1)


Не уверен, возможно ли это. iOS предоставляет полный список элементов на экране. Итак, если у вас есть прокручиваемое представление и вы говорите, что в нем 1000 элементов, тогда Appium получит все элементы, даже если только некоторые из них будут отображаться на экране одновременно.

Одна вещь, которую можно сделать, - это как можно больше избегать использования xpath. А затем в adsk dev, чтобы добавить идентификаторы автоматизации ко всем элементам управления. Таким образом, даже если вам нужно использовать xpath, список можно сузить, так как вы получите очень целевой список, основанный на идентификаторах автоматизации.

Еще можно сделать (только если вы хотите проверить, существует ли элемент) получить исходный код страницы один раз. затем просто найдите значение в исходном тексте страницы. Это значительно ускорит выполнение, но только там, где вы хотите проверить, существует ли элемент.

person Anish Pillai    schedule 29.06.2017