java - Appium + iOS + Java 如何获取我刚刚点击的 URL?

标签 java ios selenium ios-simulator appium

我有这样的环境 Appium + iOS Simulator + Java。我必须测试这种情况:

  1. 我点击应用中的按钮
  2. 我的应用正在网站
  3. 我需要检查 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/

相关文章:

selenium - Selenese html 到底是什么?

java - Junit - Java 如何处理具有断言的类方法

java - 按号码调用电话,然后按 # 键

ios - 使用 CLLocation 和/或 Mapkit 从坐标查找企业名称信息

iphone - MBProgress HUD 在 tableView 上的 reloadData 上崩溃应用程序

javascript - 启动 Selenium RC 时无法加载 user-extensions.js 中的自定义命令

java - Java实现文件上传类型

java - 获取已编译类的源代码

ios - 以编程方式创建 UIImage 以在谷歌地图上显示标记?

java - 在 selenium web 驱动程序中迭代具有相同名称的元素时索引超出范围异常