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

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

解决方案:

1.首先,确认在哪个step后切换窗口

在下个step操作前作切换。

2.封装窗口切换方法,eg.这里识别窗口title来切换

封装方法如下:

public class WinSwitchUtil {

public static boolean switchToWindow(WebDriver dr,String windowTitle){

boolean status = false;

try {

String currentHandle = dr.getWindowHandle();

Set<String> handles = dr.getWindowHandles();

Iterator<String> it = handles.iterator();

while (it.hasNext()) {

String s = it.next();

if (s.equals(currentHandle))

continue;

else {

dr.switchTo().window(s);

if (dr.getTitle().contains(windowTitle)) {

status = true;

System.out.println("Switch to window: "

+ windowTitle + "pass");

break;

} else

continue;

}

}

} catch (NoSuchWindowException e) {

System.out.println("Window: " + windowTitle + "未找到"+ e.fillInStackTrace());

status = false;

}

return status;

}

}

3.调用方法

Boolean status = switchToWindow(dr, "新窗口title");

if (status) {

//在新窗口执行的任务

}

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

Boolean status = switchToWindow(dr, "原窗口title");

if (status) {

//在原窗口执行的任务

}

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

时间: 2024-10-01 07:40:55

Selenium多窗口切换方法快速入门的相关文章

selenium webdriver窗口切换

selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面, 当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作: package test20161206; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; im

selenium 多窗口切换

selenium 多窗口切换 知识点: 1.current_window_handle:获取当前窗口句柄 2.window_handles:返回所有窗口的句柄到当前会话 3.switch_to.window():用于切换到相应的窗口.  与switch_to.frame()类似. switch_to.window()是用于不同窗口的切换.switch_to.frame()是用于不同表单的切换. 示例; #selenium 窗口切换 from selenium import webbrowser

第三章:Selenium 多窗口切换

当遇到在某一个窗口中点击某个按钮,就会跳转到另外一个窗口中,此时,如果不进行窗口切换,就会造成 元素错误. 多窗口切换案例: 我们想要操作 京东企业购 里面的内容:就必须进行窗口切换,这样才会保证不会报错 2. 窗口切换的代码:

selenium测试(Java)--多窗口切换(十三)

如果遇到点击按钮或链接后出现新窗口的情况,就需要使用窗口切换的方法. 本例中就是先打开百度搜索界面,然后利用js打开一个百度新闻界面,然后通过selenium提供的窗口切换方法切换窗口 1 package com.test.windows; 2 3 import java.util.Iterator; 4 import java.util.Set; 5 6 import org.openqa.selenium.By; 7 import org.openqa.selenium.Javascript

python selenium中iframe切换、window切换方法

一.selenium中iframe切换方法: 方法一:switch_to.frame frame函数中提供了三种定位方法: driver.switch_to.frame('frame_name') driver.switch_to.frame(1) driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0]) 以腾讯课堂为例: from selenium import webdriver from time

win+python+selenium实现窗口和tab切换

这篇总结主要是关于两方面的需求:其一,在浏览器不同tab标签页之间按时间切换(同事用来不停刷新grid crontol 监控页面):其二,实现开启多个窗口,并将窗口缩放到一定范围,并齐占满整个桌面,按不同的时间间隔刷新几个页面. 一.标签页之间切换 之前这个通过找了一个浏览器插件tab-rotator实现了其需求,并未写程序实现,后面没事的时候网上翻selenium资料写了一个,内容如下: #code by www.111cn.netfrom selenium.webdriver.common.

Selenium框架切换-----Selenium快速入门(七)

上一篇说了窗口的切换,本篇说说框架的切换. 切换框架:是指切换html中的iframe标签元素或者frame标签元素,注意,并不包括frameset 以下是常用的方法: 方法 说明 WebDriver switchTo().frame(int index) 通过索引切换到指定的框架,若框架不存在,则抛出异常 NoSuchFrameException WebDriver switchTo().frame(String nameOrId) 通过框架的name或者id切换到指定的框架,若框架不存在,则

selenium入门14 窗口切换

窗口切换: 当前窗口句柄 current_window_handle 所有的窗口句柄 window_handles 切换窗口 switch_to_window() #coding=utf-8 #切换窗口 from selenium import webdriver import time dr = webdriver.Firefox() dr.get("http://www.baidu.com") dr.find_element_by_link_text("登录")

selenium 窗口切换(多表单切换)

在web应用中,前台网页的设计一般会用到iframe/frame表单嵌套页面的应用.简单的就是一个页面签嵌套多个HEML/JSP文件.selenium webdriver  只能在同一页面识别定位元素,可以狭隘的理解成只能识别当前所在位置的页面上的元素.对于不同的iframe/frame表单中的元素是无法直接定位的.需要结合switchTo().frame()方法切换到指定的frame/iframe中.switchTo().frame()默认的是取表单的ID和name属性.如果没有id和name