Appium + iOS + Java, как получить URL, который я только что нажал?
У меня есть такая среда Appium + iOS Simulator + Java. Я должен проверить такой случай:
- Я нажимаю на кнопку в приложении
- Мое приложение отправляется на сайт
- Мне нужно проверить 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