C# Selenium:当在新选项卡中打开页面时,是否可以在新页面中继续测试?

C# Selenium:当在新选项卡中打开页面时,是否可以在新页面中继续测试?,c#,google-chrome,selenium,selenium-webdriver,C#,Google Chrome,Selenium,Selenium Webdriver,我正在使用Selenium和C#webdriver测试页面上的菜单。单击后,这些菜单项中的每一项都会在新的谷歌浏览器中打开一个页面。我想知道是否有一种方法可以在刚刚打开的新chrome标签中继续测试 感谢您的帮助。从WindowHandles获取最后一个窗口句柄,然后切换到它: driver.SwitchTo().Window(driver.WindowHandles.Last()); 是的,可以在从当前窗口打开的新页面上进行测试 假设您单击菜单,它会在新窗口中打开一页。您的驱动程序对象将以

我正在使用SeleniumC#webdriver测试页面上的菜单。单击后,这些菜单项中的每一项都会在新的谷歌浏览器中打开一个页面。我想知道是否有一种方法可以在刚刚打开的新chrome标签中继续测试


感谢您的帮助。

WindowHandles
获取最后一个窗口句柄,然后切换到它:

driver.SwitchTo().Window(driver.WindowHandles.Last());
  • 是的,可以在从当前窗口打开的新页面上进行测试

  • 假设您单击菜单,它会在新窗口中打开一页。您的驱动程序对象将以窗口句柄(或窗口id)的形式访问当前页面和新打开的页面。我们可以获得这个窗口句柄,并使用它的句柄将驱动程序控件切换到任何页面

要获取驱动程序控制的当前窗口句柄,我们可以使用

String currentWindowHandle= driver.getWindowHandle();
这将返回当前窗口的句柄,该句柄在此驱动程序实例中唯一标识该窗口。这可用于在稍后阶段切换到当前窗口

要获取驾驶员可以访问的所有车窗把手,请使用

Set<String> allWindowHandles=driver.getWindowHandles();

是的,您可以在不同的选项卡中进行测试,但如果您可以(并且希望)只使用单个选项卡,您会发现这很有趣:


我发现在测试自动化中使用单选项卡更为简单,除非你真的需要进行多选项卡测试。

我认为这个问题带有C#……不过无论如何,答案不错。谢谢
    Iterator iter = allWindowHandles.iterator();
        while (iter.hasNext()) {
    String windowHandle=iter.next();//get window handle from set
            System.out.println(windowHandle);//this will print uique window handle id
        driver.switchTo().window(windowHandle);// switch driver control to window having this handle id.
        // Get window title or url etc. and check whether it matches your expected page title.
//If yes, then you have navigated to correct page and then you can continue working on this page.
        if(driver.getTitle().equals("New Menu page title"))
        //then break the loop as you have got required page access.
        break;
        }