基础复习:WebDriver
WebDriver操作浏览器常用方法
1. maximize_window() 最大化 --> 模拟浏览器最大化按钮
2. set_window_size(100,100) 浏览器大小 --> 设置浏览器宽、高(像素点)
3. set_window_position(300,200) 浏览器位置 --> 设置浏览器位置
4. back() 后退 --> 模拟浏览器后退按钮
5. forward() 前进 --> 模拟浏览器前进按钮
6. refresh() 刷新 --> 模拟浏览器F5刷新
7. close() 关闭 --> 模拟浏览器关闭按钮(关闭单个窗口)
8. quit() 关闭 --> 关闭所有WebDriver启动的窗口
操作页面
1. title 获取页面title
2. current_url 获取当前页面URL
元素常用操作
1. clear() 清除文本
2. send_keys() 模拟输入
3. click() 单击元素
WebDriver 常用元素定位
1. id
2. name
3. class_name
4. tag_name
5. link_text
6. partial_link_text
7. Xpath
8. Css
定位方式分类:
1). id、name、class_name:为元素属性定位
2). tag_name:为元素标签名称
3). link_text、partial_link_text:为超链接定位(a标签)
4). Xpath:为元素路径定位
5). Css:为CSS选择器定位
多窗口切换
操作原理
操作原理:
1) 浏览网站时打开的所有页面均会被记录。
2) 默认情况下操作焦点在首页。
3) 在selenium中由window_handles记录(记录的内容组织为列表)
4) 若想在多个页面间切换只需要选择目标页面的handle(句柄)即可。
说明:在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;
(句柄:英文handle,窗口的唯一识别码)
操作步骤
1) 获取已打开的所有窗口的句柄
handles = driver.window_handles
调用该方法会得到一个列表,在selenium运行过程中的每一个窗口都有一个对应的值存放在里面。
2) 通过窗口的句柄进入的窗口
driver.switch_to_window(handles[n]) ---- 老版本方法
推荐:driver.switch_to.window(handles[n]) switch_to后面是点号
方法:
1). driver.current_window_handle --> 获取当前窗口句柄
2). driver.window_handles --> 获取所有窗口句柄
3). driver.switch_to.window(handle) --> 切换指定句柄窗口
frame表单切换
操作原理
操作原理:
1) html中的iframe标签提供了内联结构,使用内联结构可以在一个浏览器窗口显示多个页面。
2) iframe标签是外层页面的标签,若想操作iframe框架内嵌的页面,需要先定位到iframe标签上。
3) 通过switch_to.frame()切换到内层页面,再进行内层页面的操作。
4) 内层页面的操作办法和普通页面的操作办法相同:元素定位、元素操作。
1 frame表单切换
说明:在WebDriver类库中封装了HTML页面中使用frame表单框架技术定位的方法
操作步骤:
1) 定位到iframe标签。
2) 完成切换。
a)若iframe具有id属性,直接使用id属性值切换进内层页面
driver.switch_to.frame(value)/driver.switch_to_frame(value)
b) 定位到iframe元素,再切换进入
el = driver.find_element_by_xxx(value)
driver.switch_to.frame(el) /driver.switch_to_frame(el)
注意:
switch_to.frame()只能切换到当前页面内嵌的子级页面,若是多级页面的嵌套,需要依次在各页面中通过switch_to.frame()方法切换进入。
方法:
1). driver.switch_to.frame("myframe1") --> 切换表单方法
(myframe1:为frame表单的name或id)
2). driver.switch_to.default_content() --> 恢复默认页面方法
(在frame表单中操作其他页面,必须先回到默认页面,才能进一步操作)
2 案例-解决方案
1. 打开126邮箱首页
2. 切换到内层登陆页面
driver.switch_to.frame()
3. 定位到用户名输入框,输入用户名:
el_user = driver.find_element_by_xxx()
el_user.send_keys(“itcast_soft_test”)
4.定位到密码输入框,输入用户名:
el_pwd = driver.find_element_by_xxx()
el_pwd.send_keys(“1qaz2wsx#EDC”)
3 frame表单切换--向外层切换
若目前操作焦点在内层页面,需要切换回外层页面:
1. 跳回最外层的页面
driver.switch_to.default_content() -- 切换到最外层(对于多层页面,可通过该方法直接切换到最外层)
2. 跳回上层的页面
driver.switch_to.parent_frame() -- 进行向上的单层切换
具体封装脚本查看往期文章或git