Selenium自行整理【二十三】

本文详细介绍了在使用Selenium时如何处理多表单切换,特别是针对iframe的情况,通过switchTo().frame()方法进行内嵌页面元素定位。此外,还讲解了在新窗口弹出时,如何利用switchTo().window()方法在多个窗口间进行有效切换,包括获取窗口句柄和切换窗口的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.9、多表单切换

      在 Web 应用中经常会遇到 frame / iframe 表单嵌套页面的应用,WebDriver 只能在一个页面上对元素识别与定位,对于 frame / iframe 表单内嵌页面上的元素无法直接定位。这时就需要通过 switchTo().frame()方法将当前定位的主体切换为 frame / iframe 表单的内嵌页面中

         在上面的 html 代码中,通过 iframe 表单嵌入一个百度页面,用浏览器打开后如下图所示:

       这个时候 直接定位页面上的 百度的输入框一定 会报找不到元素的 错误,因此可以 使用switchTo().frame()先找到 frame.html 中的<iframe>标签,然后再定位百度输入框。

       switchTo().frame()默认可以直接取表单的 id name 属性。如果 iframe 没有可用的 id name 属性,则可以通过下面的方式进行定位。

     如果完成了在当前表单上的操作,则可以通过 switchTo() . defaultContent()方法跳出表单

 

4.10、多窗口切换

      在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。WebDriver 提供了 switchTo().window()方法可以实现在不同的窗口之间切换。

                                       以百度首页和百度注册页为例,演示在两个窗口之间的切换

        1、 脚本的执行过程:首先打开百度首页,通过 getWindowHandle()获得当前窗口的句柄,并赋值给变量sreach_handle。接着打开登录弹窗,在登录弹窗上单击“立即注册”,从而打开新的注册窗口。通过getWindowHandles()获得当前打开的所有窗口的句柄,并赋值给变量 handles。

       2、第一个循环遍历 handles,如果 handle 不等于 sreach_handle,那么一定是注册窗口,因为脚本执行过程中只打开两个窗口。所以,通过 switchTo().window()切换到注册页进行注册操作。第二个循环类似,不过这一次判断如果 handle 等于 sreach_handle,那么切换到百度搜索页,然后进行搜索操作。

       3、在本例中所涉及的新方法如下:

             ●  getWindowHandle():获得当前窗口句柄。

             ●  getWindowHandles():返回的所有窗口的句柄到当前会话。

             ● switchTo().window():用于切换到相应的窗口,与上一节的 switchTo().frame()类似,前者用于不同窗口的切换,

                  后者用于不同表单之间的切换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值