C# Selenium:当在新选项卡中打开页面时,是否可以在新页面中继续测试?
我正在使用Selenium和C#webdriver测试页面上的菜单。单击后,这些菜单项中的每一项都会在新的谷歌浏览器中打开一个页面。我想知道是否有一种方法可以在刚刚打开的新chrome标签中继续测试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()); 是的,可以在从当前窗口打开的新页面上进行测试 假设您单击菜单,它会在新窗口中打开一页。您的驱动程序对象将以
感谢您的帮助。从
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;
}