【问题标题】:Appium + iOS + Java how to get URL that I've just clicked?Appium + iOS + Java如何获取我刚刚点击的URL?
【发布时间】:2018-12-27 06:28:38
【问题描述】:

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

  1. 我点击了按钮在应用程序中
  2. 我的应用程序正在进入网站
  3. 我需要检查网址

我搜索了这个问题,发现iOS的webdriver没有在应用程序和浏览器之间切换,这就是我不能使用常用代码的原因:

driver.getCurrentUrl();

所以,我决定检查一下我刚刚点击的 URL 是否正确。但我不知道如何获取此 URL。 可能有人在这个问题上有经验吗?

我决定澄清一下:我正在按下按钮进入 iOS 原生应用程序,之后我将重定向到某个 URL 上的 safari。我是否有可能在没有 safari 的情况下知道这个 URL(在我还在 App 中的那一刻)。

【问题讨论】:

  • 我的问题不同。我没有问隐式等待。和Appium有关。
  • 你可以尝试在getcurrenturl行之前使用wait

标签: java ios selenium ios-simulator appium


【解决方案1】:

虽然getCurrentUrl 在 Web 浏览器在不同于“Native APP”上下文的上下文中打开时适用于 Android,但当 Safari 作为“Native APP”上下文打开时,它不适用于 iOS XCUITest。

在 iOS(Safari) 的情况下,您可以使用以下内容:

等到 safari 应用程序打开(等到下一条语句为 True):

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

然后点击URL Bar,获取它的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

【讨论】:

    猜你喜欢
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 2015-12-11
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2015-07-23
    相关资源
    最近更新 更多