Переход на iframe в android нативном и веб-приложении с помощью appium через среду ROBOT - PullRequest
0 голосов
/ 17 февраля 2020

Привет! Я много искал по inte rnet, чтобы найти способ переключиться с веб-интерфейса или встроенного контекстного представления на iframe. Я пытаюсь автоматизировать вход пользователя в приложение, и третий этап идентификации - это создание OTP. Это происходит внутри iframe, и я попробовал несколько вещей, чтобы взаимодействовать с ним. Во-первых, я не могу найти хорошую документацию о том, как добиться этого с помощью ключевых слов (Appium) с помощью робота, и у меня нет большого опыта программирования, чтобы написать его в python, а затем позвонить, но я пытался.

Первым делом я попытался использовать ключевые слова «переключиться в контекст» и «получить контексты», которые я уже использую для переключения между нативным и веб-обзором:

List Contexts
${contexts}=                              Get Contexts
${native}=                                Get From List           ${contexts}           0
${webview}=                               Get From List           ${contexts}           1  #-1
${chromeviewiframe}                       get from list           ${contexts}           -1  #1
Set Test Variable                         ${native}
Set Test Variable                         ${webview}
set test variable                         ${chromeviewiframe}

#Test Case code
sleep 60 
list contexts
switch to context  ${chromeviewiframe}
wait until element is visible  xpath=//*[@id="btnSMS"]  30
click element  xpath=//*[@id="btnSMS"]

Однако он никогда не находит iframe или кнопка и, следовательно, время ожидания - я не уверен, можно ли использовать 'get contextx' для поиска iframes.

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

#no idea what library's i am supposed to import and if the return makes sense?
class _frames():
def frame (self):
self.driver.switch_to.frame(3)
return   self.driver.switch_to.frame(3)

Мой iframe xpath равен (x бы некоторые символы) #iframe //*[@id="xxx2iframe"]

У меня были ошибки, такие как: enter image description here

Телефон все еще активирован и соединение не потеряно, но я думаю, что он просто не может найти контекст iframe - я не могу правильно проверить python файл, как код не является конкурентным, и я не уверен, что мне нужно сделать, чтобы исправить это, чтобы проверить это «решение». Я также задавался вопросом, есть ли у меня другой файл, называющий selenium и вызывающий ключевое слово frame frame, это будет работать для автоматизации appium, поскольку они используют те же драйверы? Я предполагаю, что нет?

Помощь в выяснении этого была бы очень признательна, у меня нет особого смысла в написании тестов для автоматизации, если я не могу заставить ее автоматически войти в систему и пройти этот пункт.

С уважением, Джем

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Хорошо, так что если кто-то еще ищет этот вопрос, я придумал ответ, который похож на решение этого вопроса: Как найти XPath для кнопки в пределах iframe, используя python?

Однако это не касалось и не объясняло, как его можно использовать в среде роботов, поэтому я сделал:

  1. Кликнул (ctrl + клик) по ключевым словам appium из моего файла робота, который открывает Файл «_applicationmannagement.py», который содержит все методы python, составляющие ключевые слова для приложения. Библиотека

2. В python вставлен следующий метод:

def frame (self):
  driver = self._current_application()
  driver.switch_to.frame(driver.find_element_by_xpath( "//*[@id=\"xxx2iframe\"]"))
  WebDriverWait(driver, 30).until(EC.element_to_be_clickable(("xpath","//* 
  [@id='btnSMS']"))).click()
Затем в своем файле робота я просто вызываю фрейм метода python, записывая слово 'frame' как часть моего тестового примера

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

Одна вещь, на которую следует обратить внимание, которая остановила это, - эмулятор, возможно, потребуется перезапустить, так как в какой-то момент он не будет загружать iframe на устройстве.

Очень надеюсь, что это кому-нибудь поможет!

0 голосов
/ 18 февраля 2020

Пожалуйста, установите в браузере по умолчанию значение Chrome и перезагрузите устройство. После этого Appium автоматически обнаружит веб-просмотры.

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