使用Appium在iOS Safari上切换标签

时间:2017-12-10 15:10:14

标签: java safari appium appium-ios

我正在尝试在真实的iOS设备上运行我的Appium测试。但是,我无法想象如何在Safari上的标签之间切换。我使用Appium IOSDriver实例在Safari上打开一个页面。然后,我单击页面上的一个链接,打开一个新选项卡。现在我希望关闭此选项卡或至少切换回原始窗口。

我尝试过以下解决方案,但似乎没有任何帮助:

  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);
    

1 个答案:

答案 0 :(得分:0)

我尝试过以下方式,它对我有用:

    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();

试一试。希望这有帮助