使用 Appium 在 iOS Safari 上切换选项卡
Switch between tabs on iOS Safari using Appium
我正在尝试 运行 我的 Appium 在真实 iOS 设备上进行测试。但是,我不知道如何在 Safari 上的选项卡之间切换。我使用 Appium IOSDriver 实例在 Safari 上打开一个页面。然后我在打开新选项卡的页面上单击 link。现在我想关闭此选项卡或至少切换回原来的 window.
我尝试了以下解决方案,但 none 似乎有帮助:
执行触摸操作打开选项卡界面,未能点击选项卡选项。
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();
尝试切换回原始上下文,没有帮助
for (String contextName : contextNames) {
if(!contextName.equals(original)) {
WebViewContext = contextName;
((AppiumDriver) driver).context(WebViewContext);
Thread.sleep(4000);
driver.close();
}
}
尝试过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();
试一试。希望这有帮助
我正在尝试 运行 我的 Appium 在真实 iOS 设备上进行测试。但是,我不知道如何在 Safari 上的选项卡之间切换。我使用 Appium IOSDriver 实例在 Safari 上打开一个页面。然后我在打开新选项卡的页面上单击 link。现在我想关闭此选项卡或至少切换回原来的 window.
我尝试了以下解决方案,但 none 似乎有帮助:
执行触摸操作打开选项卡界面,未能点击选项卡选项。
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();
尝试切换回原始上下文,没有帮助
for (String contextName : contextNames) { if(!contextName.equals(original)) { WebViewContext = contextName; ((AppiumDriver) driver).context(WebViewContext); Thread.sleep(4000); driver.close(); } }
尝试过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();
试一试。希望这有帮助