frame表单切换、多窗口切换


目标

1. 掌握WebDriver切换frame表单方法
2. 掌握WebDriver多窗口切换的技巧

1. frame表单

frame:HTML页面中的一种框架,主要作用是在当前页面中指定区域显示另一页面元素;
       (HTML语言中,frame/iframe标签为表单框架)

1.1 为什么要学习frame表单切换

需求:案例-2 注册实例.html
    1. 此页面有三个注册界面,先填写最上边注册信息,其次填写注册A页面注册信息,最后填写注册B页面信息
    2. 定位方式不限

问题

1. 当前页面内无法定位注册页面A和注册页面B

1.2 frame表单切换

说明:在WebDriver类库中封装了HTML页面中使用frame表单框架技术定位的方法

方法:
    1). driver.switch_to.frame("myframe1")        -->    切换表单方法
            (myframe1:为frame表单的name或id)
    2). driver.switch_to.default_content()        --> 恢复默认页面方法
            (在frame表单中操作其他页面,必须先回到默认页面,才能进一步操作)

1.3 案例-2解决方案

1. 完成当前页面注册信息;
2. 调用表单切换方法(switch_to.frame("myframe1"))切换到注册用户A表单中
3. 调用恢复默认页面方法(switch_to.default_content())
4. 调用表单切换方法(switch_to.frame("myframe2"))切换到注册用户B表单中

1.4 表单切换-总结

1. HTML中常用的表单框架
2. 切换表单方法
3. 为什么要恢复默认页面?
4. 恢复默认页面方法

2. 多窗口

说明:在HTML页面中,经常有a标签也就是超链接,这些链接在被执行时,有的会在新的窗口打开链接;

2.1 为什么要切换窗口?

案例-2 注册实例.html

需求:
    1). 点击注册A页面链接,在打开的页面,填写A页面注册信息;

问题

1). 无法定位注册A页面

2.2 多窗口切换

说明:在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;
      (句柄:英文handle,窗口的唯一识别码)

方法:
    1). driver.current_window_handle         --> 获取当前窗口句柄
    2). driver.window_handles                 --> 获取所有窗口句柄
    3). driver.switch_to.window(handle)        --> 切换指定句柄窗口

2.3 案例-2 解决方案分析

1. 获取注册实例.html当前窗口句柄
2. 点击注册实例.html页面中注册A页面
3. 获取所有窗口句柄
4. 遍历判断窗口句柄并切换到注册A页面
5. 操作注册A页面元素,注册信息

2.4 多窗口切换-总结

1. 什么是句柄?
2. 获取当前窗口句柄方法
3. 获取所有窗口句柄方法
4. 切换指定句柄窗口方法