Appium + iOS + Java, как получить URL, который я только что нажал?

У меня есть такая среда Appium + iOS Simulator + Java. Я должен проверить такой случай:

  1. Я нажимаю на кнопку в приложении
  2. Мое приложение отправляется на сайт
  3. Мне нужно проверить URL

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

driver.getCurrentUrl();

Итак, я решил проверить, является ли URL, на который я только что нажал, правильным или нет. Но я не знаю, как получить этот URL. Может быть, у кого-то есть опыт в этом вопросе?

Я решил уточнить: я в iOS-приложении нажимаю на кнопку, и после этого я перенаправляю на сафари по некоторому URL. Могу ли я иметь некоторые возможности узнать этот URL без сафари (в тот момент, когда я все еще в App).

0 ответов

Хотя getCurrentUrl работает для Android, когда веб-браузер открывается в контексте, отличном от контекста "Собственное приложение", он не реализован для iOS XCUITest, когда Safari открывается как контекст "Родное приложение".

В случае iOS(Safari) вы можете использовать следующее:

подождите, пока откроется приложение сафари (дождитесь, пока не будет True):

appiumDriver.queryAppState("com.apple.mobilesafari").toString().equals("RUNNING_IN_FOREGROUND")

Затем щелкните строку URL-адреса и получите ее TextValue:

MobileElement urlToolBar = appiumDriver.findElement(By.xpath("//XCUIElementTypeOther[@name='URL']"));
urlToolBar.click();
appiumDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//XCUIElementTypeTextField[@name='URL']")));
MobileElement urlTextFied = appiumDriver.findElement(By.xpath("//XCUIElementTypeTextField[@name='URL']"));
String desiredUrl = urlTextFied.getText();

Если в проекте используется фабрика страниц, замените findElement с @iOSXCUITFindBy

Другие вопросы по тегам