как я могу улучшить iPhone UI Automation? - PullRequest
5 голосов
/ 24 января 2011

Я много гуглял, чтобы найти решение своих проблем с UI Automation.Я нашел сообщение, в котором приятно обобщены проблемы:

Нет способа запустить тесты из командной строки. (...)

Нет способа настроить или сбросить состояние,(...)

Частью предыдущей проблемы является то, что в UI Automation нет концепции дискретных тестов.(...)

Нет способа программно получить результаты теста.(...)

источник: https://content.pivotal.io/blog/iphone-ui-automation-tests-a-decent-start

№ проблемы.3 можно решить с помощью жасмина (https://github.com/pivotal/jasmine-iphone)

Как насчет других проблем? Были ли внесены какие-либо улучшения с тех пор (20 июля 2010 г.)?

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

Ответы [ 4 ]

5 голосов
/ 25 января 2011

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

Он привносит хорошие замечания по некоторым вопросам использованияUI Automation для более серьезного тестирования.Если вы прочтете комментарии позже, то вы сможете обсудить способы решения этих проблем.

Тема запуска тестов из командной строки обсуждается в этом вопросе , гдепотенциальное решение указано на на форумах разработчиков Apple .Я сам не пробовал.

Вы можете экспортировать результаты теста после его запуска, который вы можете проанализировать в автономном режиме.

Наконец, что касается вашего последнего вопроса, вы можетеадресовать элементы пользовательского интерфейса, не назначая им метку доступности.Многие общие элементы управления UIKit доступны по умолчанию, поэтому вы уже можете назначить их по имени.В противном случае вы можете выбрать виды по их расположению в иерархии отображения, как в следующем примере:

var tableView = mainWindow.tableViews()[0];

Как всегда, если в инструменте автоматизации пользовательского интерфейса чего-то не хватает, что важно для вас, подайте запрос на расширение , чтобы он мог найти путь к следующей версии SDK.

3 голосов
/ 01 августа 2012

Вы пробовали IMAT? https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu. Он использует собственный javascript sdk, предоставленный Apple, и может быть запущен через командную строку или инструменты.

В ответ на каждый ваш вопрос:

Нет способа запустить тесты из командной строки. (...)

Apple теперь предоставляет это. С IMAT вы можете запустить тесты через командную строку или через инструменты. До того, как Apple предоставила интерфейс командной строки, мы использовали AppleScript для запуска Instruments, а затем начали тесты - неприятно.

Нет способа установить или сбросить состояние. (...)

Проверьте эту диаграмму состояний: https://code.intuit.com/sf/wiki/do/viewPage/projects.ginsu/wiki/RecoveringFromTestFailures

Частью предыдущей проблемы является то, что в UI Automation нет концепции дискретных тестов. (...)

Согласовано. И IMAT, и tuneup.js (https://github.com/alexvollmer/tuneup_js#readme) допускают это.

Нет способа программно получить результаты теста. (...)

Чтение файла конечного списка не является тривиальным. IMAT предоставляет отчет, похожий на jUnit, после запуска теста, прочитав plist-файл, и его получает мой инструмент CI (Teamcity, Jenkins, CruiseControl)

0 голосов
/ 09 августа 2011

Извлечение http://lemonjar.com/blog/?p=69 В нем рассказывается, как запустить UIA из командной строки

0 голосов
/ 14 июля 2011

Попробуйте проверить иерархию элементов, таблицу можно поместить поверх UIScrollView.

var tableV = mainWindowTarget.scrollViews()[0].tableViews()[0].scrollToElementWithName("Name of element inside the cell");

приведенный выше скрипт будет работать, даже если элемент находится в 12-й ячейке (но имя должно быть точно таким же, какупоминается внутри клетки)

...