Appium+;iOS+;Java如何获取我';你刚刚点击了?

Appium+;iOS+;Java如何获取我';你刚刚点击了?,java,ios,selenium,ios-simulator,appium,Java,Ios,Selenium,Ios Simulator,Appium,我有这样的环境Appium+iOS模拟器+Java。我必须测试这种情况: 我在应用程序中单击按钮 我的应用程序将转到网站 我需要检查网址 我搜索了这个问题,发现iOS版webdriver没有在应用程序和浏览器之间切换,这就是我不能使用常用代码的原因: driver.getCurrentUrl(); 所以,我决定检查我刚才点击的URL是否正确。但是我不知道如何获取这个URL。 也许有人在这个问题上有经验 我决定澄清一下:我进入了iOS原生应用程序,按下按钮,然后我在某个URL上重定向到safar

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

  • 我在应用程序中单击按钮
  • 我的应用程序将转到网站
  • 我需要检查网址
  • 我搜索了这个问题,发现iOS版webdriver没有在应用程序和浏览器之间切换,这就是我不能使用常用代码的原因:

    driver.getCurrentUrl();
    
    所以,我决定检查我刚才点击的URL是否正确。但是我不知道如何获取这个URL。 也许有人在这个问题上有经验


    我决定澄清一下:我进入了iOS原生应用程序,按下按钮,然后我在某个URL上重定向到safari。在没有safari的情况下(当我还在应用程序中的时候),我可以知道这个URL吗?

    虽然当web浏览器在不同于“本机应用程序”上下文的上下文中打开时,
    getCurrentUrl
    对Android起作用,但当safari作为“本机应用程序”上下文打开时,它不适用于iOS XCUITest

    对于iOS(Safari),您可以使用以下功能:

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

    然后单击URL栏并获取其文本值:

    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
    替换为
    @iosxguitfindby

    我的问题的可能重复项不同。我很抱歉,我没问你要等多久。并与应用程序相关。能否尝试在getcurrenturl行之前使用wait
    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();