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

时间:2015-07-25 18:11:56

标签: java selenium selenium-webdriver

我正在学习Selenium-Webdriver,因此在一个场景中练习,但我已经陷入了第3步。情景如下:

  1. 打开谷歌主页并进行一些搜索,比如说#34; WebDriver"。
  2. 在同一窗口的新标签页中打开前两个链接。
  3. 导航至第二个和第三个标签并获取其标题
  4. 关闭标签并切换回google结果标签。
  5. 到目前为止,我可以打开谷歌主页,搜索单词" WebDriver"并打开前两个链接,但现在我无法切换到第二个和第三个选项卡并关闭它们。到目前为止我的代码是:

    PHP_Code/MyAjax.php?page=page_id

    我不知道它出了什么问题,以及如何解决它。 :(

4 个答案:

答案 0 :(得分:1)

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

如果您需要在新窗口中打开 - 您需要点击按下shift btn

的链接

代码就像

jQuery(document).ready(function($){

如果你需要切换窗口

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

请尝试使用以下代码:

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

希望这有帮助。

答案 3 :(得分:1)

  1. 通过以下代码获取所有窗口处理程序。 设置windowHandleSet = driver.getWindowHandles();
  2. 在窗口处理程序集中循环,切换到每个窗口处理程序集。 。driver.switchTo()窗口(windowHandleStr);
  3. 运行命令Ctrl + number在同一个Firefox窗口中的不同选项卡之间切换。 WebElement bodyEle = driver.findElement(By.tagName(“body”)); bodyEle.sendKeys(Keys.CONTROL +“1”);
  4. http://www.dev2qa.com/open-multiple-windows-tabs-in-selenium-webdriver/