硒多窗口切换方法快速入门

问题描述:执行脚本时遇到最多的一个问题就是无法找到在硒元素…,除了排除页面加载时间原因外,对于初学者常犯的一个错误是,点击某个按钮跳转到新页面的问题。若在当前页面打开,给予足够的加载时间即可。但若是新窗口打开页面时,硒是不会自动识别到新窗口去查找元素的,所以需要我们去模拟人为切换到新窗口.WebDriver提供了switchTo () .window()方法可以实现在不同的窗口之间切换。


解决方案:

1。首先,确认在哪个步骤后切换窗口

在下个步骤操作前作切换。


2。封装窗口切换方法,如这里识别窗口标题来切换

封装方法如下:

,公开课WinSwitchUtil {

,,公共静态布尔switchToWindow (WebDriver博士,字符串windowTitle) {

,,,,布尔状态=false;

,,,,尝试{

,,,,,,字符串currentHandle=dr.getWindowHandle ();

,,,,,,Set处理=dr.getWindowHandles ();

,,,,,,Iterator它=handles.iterator ();


,,,,,,而(it.hasNext ()) {

,,,,,,,,字符串s=it.next ();

,,,,,,,,如果(s.equals (currentHandle))

,,,,,,,,,,继续;

,,,,,,,,其他{

,,,,,,,,,,dr.switchTo () .window(年代);

,,,,,,,,,,如果(dr.getTitle () .contains (windowTitle)) {

,,,,,,,,,,,,状态=true;

,,,,,,,,,,,,System.out.println(“切换到窗口:“

,,,,,,,,,,,,,,,,+ windowTitle +“pass");

,,,,,,,,,,,,打破;

,,,,,,,,,,其他}

,,,,,,,,,,,,继续;

,,,,,,,,}

,,,,,,,}

,,,,,,}捕捉(NoSuchWindowException e) {

,,,,,,System.out.println(“窗口:“;+ windowTitle +“未找到“+ e.fillInStackTrace ());

,,,,,,状态=false;

,,,,}

,,,,返回状态;

,,}}



3。调用方法

布尔状态=switchToWindow(博士,“新窗口title");

,,,,,,如果(状态){

//在新窗口执行的任务

}


4。若实际业务中要求在新窗口中操作完成后再回到原窗口时,可再次调用该方法即可。

布尔状态=switchToWindow(博士,“原窗口title");

,,,,,,如果(状态){

//在原窗口执行的任务

}


5。以上是较简单业务时的处理方法,若是复杂业务可以通过写集合来封装好多个窗口,根据业务来选择调用。也适用于弹窗业务。



硒多窗口切换方法快速入门