使用 Appium 在 iOS Safari 上切换选项卡

Switch between tabs on iOS Safari using Appium

我正在尝试 运行 我的 Appium 在真实 iOS 设备上进行测试。但是,我不知道如何在 Safari 上的选项卡之间切换。我使用 Appium IOSDriver 实例在 Safari 上打开一个页面。然后我在打开新选项卡的页面上单击 link。现在我想关闭此选项卡或至少切换回原来的 window.

我尝试了以下解决方案,但 none 似乎有帮助:

  1. 执行触摸操作打开选项卡界面,未能点击选项卡选项。

    TouchAction ta = new TouchAction(driver);
    int h=driver.manage().window().getSize().getHeight();
    int w=driver.manage().window().getSize().getWidth();
    ta.tap(h-50,w-50).perform();
    
  2. 尝试切换回原始上下文,没有帮助

    for (String contextName : contextNames) {
        if(!contextName.equals(original)) {
            WebViewContext = contextName;
            ((AppiumDriver) driver).context(WebViewContext);
            Thread.sleep(4000);
            driver.close();
        }
    }
    
  3. 尝试过Javascript,没有成功

    Set<String> windows = driver.getWindowHandles();
    String currentHandle = driver.getWindowHandle();
    ((JavascriptExecutor)driver).executeScript("window.open();");
    Set<String> newWindow = driver.getWindowHandles();
    newWindow.removeAll(windows);
    driver.switchTo().window(original);
    

我试过下面的方法,对我有用:

    IOSDriver driver = new IOSDriver();
    driver.get("url to be opened");
    WebElement ele = driver.findElement(By.xpath("xpathOfElementToBeclicked"));

    ele.click(); //New window opens

    Set<String> contextView = ((AppiumDriver)driver).getContextHandles();
    ArrayList<String> s = new ArrayList<String>(contextView);        
    ((AppiumDriver)driver).context(s.get(contextView.size()-1));
    driver.close();

试一试。希望这有帮助