Selenium实现多页面切换

当使用 Selenium 进行自动化测试或爬取数据时,有时需要处理多个页面之间的切换。以下是一些可能需要多页面切换的情况:

1、打开新窗口/页面:

在当前页面上点击链接、按钮或执行某些操作时,可能会打开一个新的窗口或页面。此时,需要切换到新的窗口或页面,以便在其中执行操作。

2、处理弹出窗口:

某些网站在操作期间可能会弹出新的窗口,例如弹出登录框、提示框等。在这种情况下,需要切换到弹出窗口进行操作。

3、处理 iframe 内嵌页面:

有些网页中包含了 iframe 元素,它们可以嵌入其他网页。如果需要与 iframe 中的内容进行交互,就需要切换到 iframe 所在的页面。

4、执行多个任务:

有时需要在不同的页面上执行不同的任务,例如在一个页面填写表单,然后在另一个页面上进行搜索并获取结果。在这种情况下,需要在不同的页面之间切换。

为了处理这些情况,Selenium 提供了一些方法来实现多页面的切换:

  • window_handles 属性:可以使用 driver.window_handles 获取当前所有打开窗口的句柄列表。每个窗口都有一个唯一的句柄标识。

  • switch_to.window(handle) 方法:可以使用 driver.switch_to.window(handle) 方法切换到指定的窗口句柄。这样可以将操作焦点从一个窗口切换到另一个窗口。

通过上述方法,可以在不同的页面之间切换,以执行所需的操作。

下面详细介绍如何使用 Selenium 实现多页面的切换:

1、首先,创建一个 WebDriver 对象。这可以是 ChromeDriver、FirefoxDriver等。

from selenium import webdriver driver = webdriver.Chrome() 

2、打开第一个页面。使用 get() 方法打开指定的 URL。

driver.get('http://www.example.com/page1') 

3、在第一个页面上查找并点击一个链接以打开新的页面。​​​​​​​

link = driver.find_element_by_link_text('Open new page') link.click()

4、获取当前所有打开的窗口句柄列表。

window_handles = driver.window_handles

Selenium 使用 window_handles 属性来存储浏览器中当前打开的所有窗口句柄。每个窗口都有一个唯一的句柄。

5、切换到新的页面。

driver.switch_to.window(window_handles[1])

使用 switch_to.window() 方法切换到指定的窗口句柄。在上面的示例中,选择第二个窗口句柄来切换到新的页面。

现在,可以在新的页面上进行操作。

6、切换回原始页面。

driver.switch_to.window(window_handles[0])

使用 switch_to.window() 方法切换回第一个窗口句柄,也就是原始页面。

7、继续在原始页面上执行其他操作。

# 在原始页面上进行其他操作

8、最后,关闭浏览器。

driver.quit()

以上就是使用 Selenium 实现多页面切换的基本步骤。需要使用 window_handles 属性来获取所有窗口句柄,并使用 switch_to.window() 方法切换窗口句柄来实现页面切换。具体的代码和操作可能会根据实际情况有所不同,可以根据自己的需求进行适当的调整和扩展。

如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以加裙485187702,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.确认(verifation)和断言(assert)有什么区别? 确认:当测试中的一个用例存在错误时,系统将会继续运行这些测试 断言:当测试中的一个用例存在错误时,系统将会退出当前用例 总而言之,确认和断言的不同在于,当出现错误情况之后,系统将会如何处理。 .test case 和testsuite的区别? test case是一个用例 test suite是一组用例 7.selenium IDE, selenium core, selenium core hta, selenium rc四者的概念以及它们之间的区别? selenium IDE(集成开发环境)。它是一个firefox的插件,可以录制、回放并编辑测试脚本 selenium Core(核心)。这是符合断言机制,由测试套件执行的平台。它是整个测试机制的核心部分,由纯javaScript代码组成 selenium Core Hta.这是针对IE设计的执行平台,运行于IE的最高字全级别之上。 selenium Remote Control(远程控制):它是一个代理与控制端,可代替selenium core/selenium DIE的客户端,并支持多语言 8.能不能在IE中录制脚本吗? 不能,只能在firefox中安装selenium IDE,而只有selenium IDE才存在录制的功能。 如果想测试一些,不能在firefox中正常显示的程序,则只有安装selenium RC,然后自己编写测试脚本,只有这样,脚本才能在ie中运行。 12.怎样安装多窗口模型? (1)启动selenium-server时,输入以下的命令:java-jar selenium-server.jar -multiwindow。则会在两个窗口中显示运行结果 (2)启动selenium-server时,输入以下的命令:java -jar selenium-server.jar -singlewindow。则会在一个窗口中显示运行结果 15.怎样访问变量? ${变量名} 16.在录制的过程中,遇到了提示框的话,要怎样处理才能在正常的回放? 17.录制到邮件的时候,不能正常录制,要如何处理呢? 录制的时候,首先要指定要框架,然后再输入文本。 例如:邮件通过firebug定位为: 在selenium ide中则需要手动的输入以下的内容: 再输入一条以下的命令:selectFrame relative=top 则,此时的脚本就能正常的运行了。 18.录制到组件的时候,不能正常录制,要怎样处理? 例如:上传附件(以及其它一些要上传的东西),刚发现附件并不是不能录制,而是你在界面中的定位不是很清楚,selenium不能识别。 19.录制时,会跳出多个窗口,此时要怎样处理? 存在四种解决方法,可以参考http://www.boobooke.com/bbs/viewthread.php?tid=41824&highlight=selenium中的第七集 具体方法如下:(1)java中可用如下的代码:String[] titles =selenium.getAllWindowTitles(); //得到所有窗口的标题 selenium.selectWindow("title="+titles[titles.length-1]); //选择最后打开的一个窗口 selenium.close(); //关闭最后打开的一个窗口 selenium.selectWindow("null"); //重新聚集在最开始的一个窗口(只有两个窗口的时候) (2)java中可用如下的代码:selenium.click("link=????"); 换成如下的两行代码 String url = selenium.getAttribute(link=????@href); selenium.open(url); 注:此方法也存在一定的缺陷,就是不能验证click点击事件是否正确。 (3)利用javascript去掉原代码中的target="_blank"的属性(目前为止还不清楚) (4)这种方法不清楚,看的不是很懂 20.什么是window
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值