2014-12-02 2 views
1

Я работаю над автоматизированными тестами для моего приложения, и у меня возникают проблемы при попытке настроить среду для запуска тестов. План примерно так:Предупреждение об увольнении при первом запуске на симуляторе iOS

  • построить приложение
  • выключения тренажера при работе
  • стереть тренажер, чтобы сделать чистую установку
  • установить мое приложение на тренажере
  • запустить UIAutomation тесты

Все работает, за исключением случаев, когда приложение запускается с помощью инструментов для выполнения тестов, появляется предупреждение о том, если пользователь позволяет получать уведомления. Это все, как ожидалось, но я не могу найти способ избавиться от предупреждения.

Вещь, которые я уже пробовал:

  • создание onAlert как первое, что в моем тестовом сценарии, в случае, если он появляется перед моим предупреждением обратного вызова определяется
  • задержки цели на 5 секунд в том случае, тесты на самом деле не работать, даже до того, как пользовательский интерфейс приложения отображается в симуляторе

Я также прошел все перестановки выше, что можно найти на SO, я никогда не получить мой onAlert обратного вызова, независимо от того, что я делать. Так что еще одна вещь, которую я попытался было:

  • попытка отклоняя предупреждение AppleScript

Сценарий я написал:

tell application "System Events" 
    tell process "iOS Simulator" 
     set allUIElements to entire contents of window 1 
     repeat with anElement in allUIElements 
      try 
       log anElement 
      end try 
     end repeat 
    end tell 
end tell 

и отображает:

static text “MyApp” Would Like to Send You Notifications of window iOS Simulator - iPhone 6 - iPhone 6/iOS 8.1 (12B411) of application process iOS Simulator 
static text Notifications may include alerts, sounds, and icon badges. These can be configured in Settings. of window iOS Simulator - iPhone 6 - iPhone 6/iOS 8.1 (12B411) of application process iOS Simulator 
UI element 3 of window iOS Simulator - iPhone 6 - iPhone 6/iOS 8.1 (12B411) of application process iOS Simulator 

Похоже кнопки помещаются внутри «элемента UI 3», но я не могу извлечь какие-либо элементы из i nside it, не говоря уже об этом. Поэтому я проверил, предоставляющие менеджер:

UI element 3 in Accessibility Manager

Он сидит там, как один из детей, остальные являются заголовок уведомления и сообщения. Но когда я иду к этому элементу, он выделяется, и я вижу это:

enter image description here enter image description here

Она определяется как общий элемент, он не имеет детей ... Самое интересное, когда Я выбираю кнопку OK в Accessibility инспектор, я могу реально увидеть, что это ребенок из окна, но она никогда не в списке:

enter image description here

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

ответ

0

Если вы используете автоматизацию с использованием инструмента, вам необходимо будет зарегистрировать обратный вызов (onAlert) для выполнения любых действий над предупреждениями.

Но проблема в вашем случае заключается в том, что предупреждение появляется до того, как ваш скрипт фактически начнет выполнение, и в то время для предупреждения не было обратного вызова.

Так что если оповещение может появиться с задержкой около 10 секунд при запуске приложения, тогда только его можно обработать. Но это можно контролировать только с помощью исходного кода, а не с помощью кода автоматизации.

Так единственный вариант, который остался вам нужно руководству отклонить уведомление, как только свежее приложение устанавливается

Я также обращенным же проблема, и нашел, что это ограничение инструмента

Есть слишком многие ограничения этого инструмента и вот почему я перешел на UFT

0

У меня была аналогичная проблема. Я просто хотел, чтобы позиция последнего контроля была начеку. Поэтому я придумал следующий фрагмент кода:

on get_simulator_last_object_rect(simulator_index) 

tell application "System Events" 
    set ProcessList to (unix id of processes whose name is "iOS Simulator") 
    set myProcessId to item simulator_index of ProcessList 
    tell window 1 of (processes whose unix id is myProcessId) 

     -- Forcefully print the UI elements so that Accessibility hierarchy is built 
     UI elements 
     -- Then wait precisely to let the Accessibility view hierarchy is ready 
     delay 0.5 

     set lowest_label_lowest_position to 0 
     set _x to 0 
     set _y to 0 
     set _width to 0 
     set _height to 0 

     repeat with element in UI elements 

      set {_x, _y} to position of element 
      set {_width, _height} to size of element 
      set current_control_lowest_position to _y + _height 

      if current_control_lowest_position > lowest_label_lowest_position then set lowest_label_lowest_position to current_control_lowest_position - _height/2 

     end repeat 
     return {{_x, _y}, {_width, lowest_label_lowest_position}} 
    end tell 
end tell 
end get_simulator_alert_ok_button_position 

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

Хотя я еще не пробовал, но я уверен, что вы можете создавать события мыши из сценария Apple и выполнять щелчок по кадру/центру кадра.

Надеюсь, это поможет.

Thanks, RKS

Смежные вопросы