当前位置: 首页 > 知识库问答 >
问题:

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

唐健
2023-03-14

我正在学习Selenium-Webdriver等,以便在一个场景中进行练习,但我仍然停留在第3步。场景如下:

  1. 打开google主页并执行一些搜索,例如搜索单词“WebDriver”。
  2. 在同一窗口的新选项卡中打开前两个链接。
  3. 导航到第二个和第三个选项卡并获取它们的标题
  4. 关闭选项卡并切换回google result选项卡。

到目前为止,我能够打开google主页,在“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() );

我不知道哪里出了问题,怎么修理。:(

共有1个答案

燕野
2023-03-14

可能太晚了,但希望这能有所帮助:

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)              
    }
 类似资料:
  • 问题内容: 我想在包含该链接页面的同一窗口和同一选项卡中打开一个链接。 当我尝试使用打开链接时,它将在新选项卡中打开,而不是在同一窗口的同一选项卡中打开。 问题答案: 你需要使用name属性: 编辑:URL应该在协议之前。没有它,则尝试打开相对URL。经过Chrome 59,Firefox 54和IE 11的测试。

  • 我的目标是让一系列测试一个接一个地运行。我希望有一个“登录”脚本让用户登录,然后在同一窗口/驱动程序中继续执行以下脚本。我使用的是TestNG,所以我的测试套件设置在TestNG.xml文件中(如果有帮助的话)。 我要运行的下一个脚本:

  • 问题内容: 我已经制作了一个简单的JavaFX应用程序,但是当用户单击按钮时,我希望主窗口打开一个辅助窗口。 最简单的方法是什么? 问题答案:

  • 我正在处理一个(父)网页的需求,该网页有一些链接,比如Link1、Link2和Link3。当我单击链接1(将在活动窗口1(子窗口)的新窗口中打开)时,当我单击链接2/Link3时,页面应在同一窗口(窗口1)中打开。 问:Javascript/Jquery/Ajax中是否有实现此功能的方法。请分享你对此的宝贵想法。 注意:如果没有打开任何链接,则应弹出一个新窗口。我知道我们在HTML中有选项targ

  • 问题内容: 我有来自第三方开发人员的JavaScript文件。它具有一个具有链接的链接,该链接将当前页面替换为目标页面。我想在新标签页中打开此页面。 这是我到目前为止所拥有的: 谁能帮我吗? 问题答案:

  • 问题内容: 我正在使用Python。我正在尝试在Chrome上打开两个标签,每个标签都指向不同的网站。这是我的代码: 当我运行它时,第一个标签页打开到reddit.com,然后另一个标签页打开到我的默认网页,然后在原始标签页中打开bing.com。我希望第一个选项卡转到Reddit,第二个选项卡转到bing,但仅作用于第一个选项卡。 问题答案: 像这样为python尝试: