繁体   English   中英

如何使用Selenium Webdriver在同一窗口中打开多个选项卡(超过2个)之间切换

[英]How to switch between multiple tabs(more than 2) open in same window using Selenium Webdriver

我正在学习Selenium-Webdriver,因此在一种情况下进行练习是可行的,但是我陷入了第3步。 方案如下:

  1. 打开Goog​​le主页并执行一些搜索,例如说“ WebDriver”。
  2. 在同一窗口的新选项卡中打开前两个链接。
  3. 导航到第二个和第三个选项卡并获取其标题
  4. 关闭标签页,然后切换回Google结果标签页。

到目前为止,我已经能够打开Goog​​le主页,对“ WebDriver”一词进行搜索并打开前两个链接,但是现在我无法切换到第二个和第三个选项卡并关闭它们。 到目前为止,我的代码是:

    String originalHandle = driver.getWindowHandle();
    System.out.println("Before switching title is:" +driver.getTitle());
    String selectLinkOpeninNewTab = Keys.chord(Keys.COMMAND,Keys.ENTER);
    WebElement link1 = driver.findElement(By.xpath(".//*[@id='rso']/div[2]/div[1]/div/h3/a"));
    link1.sendKeys(selectLinkOpeninNewTab);
    WebElement link2 = driver.findElement(By.xpath(".//*[@id='rso']/div[2]/div[2]/div/h3/a"));
    link2.sendKeys(selectLinkOpeninNewTab);

    Set<String> s1 = driver.getWindowHandles();
    Iterator<String> i1 = s1.iterator();
    int i = 0;
    while(i1.hasNext())
    {
        i++;
    String childwindow = i1.next();

    if(!originalHandle.equalsIgnoreCase(childwindow))
    {
    driver.switchTo().window(childwindow);
    Thread.sleep(10000);
    System.out.println("After switching title of new Tab "+i+ " title is " +driver.getTitle());
    driver.close();
    }
}

driver.switchTo().window(originalHandle);
System.out.println("Original window tab title is" +driver.getTitle() );

我不确定问题出在哪里以及如何解决。 :(

我搜索了选项卡切换等功能,但一无所获。 最接近此窗口的是Windows。 (有很多评论说WindowHandles可以用于选项卡切换,但是事实并非如此-我已经尝试了很多。它只能用于Windows切换,而不能用于选项卡切换)

如果您需要在新窗口中打开-您需要单击带有Shift的btn链接

代码就像

Actions.KeyDown(Keys.Shift).Click(ElementToClick).KeyUp(Keys.Shift).Build().Perform();

如果您需要切换窗口

var _windowsList = new List<String>(Instance.WindowHandles);
Instance.SwitchTo().Window(_windowsList[0]);

可能为时已晚,但希望这会有所帮助:

for (String winHandle : driver.getWindowHandles()) { //Gets the new window handle
        System.out.println(winHandle);
        driver.switchTo().window(winHandle);        // switch focus of WebDriver to the next found window handle (that's your newly opened window)              
    }

请尝试以下代码:

Set<String> s1 = driver.getWindowHandles();
for(String childwindow : s1) {
   if(!originalHandle.equals(childwindow)) {
       driver.switchTo().window(childwindow);
       System.out.println("Tab title is " + driver.getTitle();
   }
   driver.close();
}
driver.switchTo().window(originalHandle);

希望这可以帮助。

  1. 通过以下代码获取所有窗口处理程序。 设置windowHandleSet = driver.getWindowHandles();
  2. 循环进入窗口处理程序集,切换到每个。 driver.switchTo()。window(windowHandleStr);
  3. 运行命令Ctrl + number可以在同一Firefox窗口的不同选项卡之间切换。 WebElement bodyEle = driver.findElement(By.tagName(“ body”));; bodyEle.sendKeys(Keys.CONTROL +“ 1”);

http://www.dev2qa.com/open-multiple-windows-tabs-in-selenium-webdriver/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM