我有这样的环境 Appium + iOS Simulator + Java。我必须测试这种情况:
- 我点击应用中的按钮
- 我的应用正在网站
- 我需要检查 URL
我搜索了这个问题并意识到 iOS 的 webdriver 没有在应用程序和浏览器之间切换,这就是我不能使用常用代码的原因:
driver.getCurrentUrl();
所以,我决定检查我刚刚点击的 URL 是否正确。但我不知道如何获得这个网址。 可能有人在这个问题上有经验吗?
我决定澄清一下:我进入了 iOS 原生应用程序,按下按钮,然后我将重定向到某个 URL 上的 safari。我是否有可能在没有 safari 的情况下知道这个 URL(在我还在应用程序中的那一刻)。
最佳答案
虽然 getCurrentUrl
在 Web 浏览器打开时在与“ native 应用程序”上下文不同的上下文中打开时适用于 Android,但当 Safari 打开为“ native 应用程序”上下文时,它没有为 iOS XCUITest 实现.
对于 iOS(Safari),您可以使用以下内容:
等到 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();
如果项目中使用了 Page Factory,则将 findElement
替换为 @iOSXCUITFindBy
关于java - Appium + iOS + Java 如何获取我刚刚点击的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51417198/