Вопросы по работе с Appium Inspector и Appium в целом.

Всем привет, я новичек в автоматизированном тестировании, уже обращался за помощью здесь во время сэтапа аппиума, первые проблемы решены, но вопросов становится все больше. Я тестирую приложение на ios+android, для это была выбрана связка appium+ruby. Никаких доп. либ и фреймворков пока что не использую.
Собственно вопросы :

  1. При работе с инспектором в андроид приложении для того чтобы дойти до нужного мне элемнта и выдрать его xpath нужно пройти 9-10 слоев, что-то вроде этого //android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.EditText[2]
    На ios путь выглядит намного компактней и проходится намного быстрее( если использовать рекордер и что-то посылать или тапать элемент)
    Какие есть варианты других вьюверов для более быстрого “выдирания” xpath ? Может стоит пробовать искать элементы по ID?

  2. Чем лучше всего запускать тесты локально? Как их дебажить если я запускаю их из команд лайна? (использую мак) Сейчас у меня если тесту не удалось найти элемент или он не смог сделать какое-то действие, он останавливается в симуляторе на этом месте и все. Помню когда чуть чуть смотрел селениум +ява+тест нг там были эксепшены и логи

  3. Какие фреймворки посоветуете для новичка?

  4. Возможно ли юзать один и тот же код для тестирования андроид и иос билда ? Если да, то каким образом?

  5. Возможно ли увеличить скорость прохода тестов ( крайне медленно печатает инпуты по дефолту?

Если у кого-то есть возможность проконсультировать по скайп буду очень признателен.

Сразу разочарую XPath в iOS работает в 4 раза медленнее чем в Android.
Если хочешь укоротить XPath в Android, отталкивайся от ближайшего resource-id в дереве, примерно так:

$I->byXPath('//android.widget.ListView[@resource-id="ru.livemaster:id/lvWorks"]/android.widget.RelativeLayout[2]/android.widget.LinearLayout/android.widget.TextView[3]')->text();

если бы я писал полный путь он был бы в 2,5 раза длиннее.

  1. Тесты запускаются через Jenkins по поступлению коммита в репозиторий SVN.
  2. Использую для тестирования PHPUnit+Appium/php-client в связке с selenium-grid
  3. Возможно, если приложение написаны 1 в 1 по визуальным элемента, для унификации искомых элемнтов используй пейджобъекты для каждой платформы.
  4. Вряд ли, если только напрямую UI Atumation использовать.

Привет.

Про XPath уже ответили.
Дальше:

  1. Из опыта — для разработки, запуска и отладки удобен RubyMine.
    Из командной строки отладить способов не знаю. Как вариант, можно выполнить код в ruby_console, там же “поиграться” с ним.

  2. Первое и основное — это официальный gem ruby_lib и документация по нему. Для тестирования и проверок используются RSpec, MiniTest, Test::Unit или Cucumber. Для каждого есть встроенные и кастомные репортеры (тут нужно гуглить).

  3. Да. Из основных подходов — либо разделение на уровне локаторов отдельных элементов (каждый локатор — хэш), либо разные PageObjects для каждой платформы (при этом методы и названия элементов должны быть одинаковы).

  4. Не использовать XPath-локаторы для iOS. uiautomation и accessibility работают быстрее.

Ап.
Привет пацантрэ. Столкнулся с проблемами в Аппиуме может кто подскажет(IOS 9.3):

  1. Краш при запуске. Первый раз всегда крашится эмулятор.
  2. Не видит изменений в Subview, Popup т.е. раз загрузил элементы и больше Аппиум ничего не отслеживает на определенной вьюхе.
    Всем спасибо за ваше время!Конфигурация:
    [caps]
    platformName = “ios”
    deviceName = “iPad Air”
    platformVersion = “9.3”
    app = “.appName”
    [appium_lib]
    sauce_username = false
    sauce_access_key = false
    Xcode 7.3, Cucumber, Ruby, Appium 1.5.2
    logs for crash on startup:
    [debug] [Instruments] Instruments exited with code 0
    [debug] [iOSLog] Stopping iOS log capture
    [debug] [iOS] Running ios sim reset flow
    [debug] [iOS] Killing the simulator
    [debug] [iOSSim] Killing all iOS Simulators