下拉选择框、警告框、滚动条操作
目标
1. 掌握下拉选择框的操作方法
2. 掌握处理警告框的方法
3. 掌握调用JavaScript方法
1. 什么是下拉选择框
说明:下拉框就是HTML中<select>元素;
1.1 为什么学习下拉选择框?
需求:
案例-1 注册页面A,城市选项-暂停2秒后选择上海A,暂停2秒后选择重庆,暂停2秒后选择广州
案例-1 实现方式
1. 定位option选项
2. 定位方式不限
问题
1. 经过刚才代码演示,只能定位根据option选项的值来判断;
2. 如果有多个选项原有的定位方式处理起来比较繁琐;
1.2 Select类
说明:Select类是WebDriver为解决select标签定位诞生的,此类定位的是select标签
select类有哪些方法?
select方法:
1. select_by_index() --> 根据option索引来定位,从0开始
2. select_by_value() --> 根据option属性 value值来定位
3. select_by_visible_text() --> 根据option显示文本来定位
1.3 Select类实现 步骤分析:
1. 导包 Select类 --> from selenium.webdriver.support.select import Select
2. 实例化Select类 select=Select(WebElemet)
(WebElement):driver.find_element_by_id("selectA"))
3. 调用方法:select.select_by_index(index)
(index:为列表索引,从0开始)
1.4 Select实现代码 总结
#导包
from selenium.webdriver.support.select import Select
...
# 1. 根据索引实现
select.select_by_index(1)
select.select_by_index(3)
select.select_by_index(2)
# 2. 根据文本值实现
select.select_by_visible_text("A上海")
select.select_by_visible_text("A重庆")
select.select_by_visible_text("A广州")
# 3. 根据value属性实现
select.select_by_value("sh")
select.select_by_value("cq")
select.select_by_value("gz")
...
需求
对案例-1 注册页面A,首先点击alerta按钮,其次输入用户名:admin
问题
1. 按钮被点击后弹出对话框,而接下来输入用户名的语句没有生效
2. 警告框处理
说明:WebDriver中对处理警告框的操作,有专用的处理方法;
提示:
HTML中常用的对话框有三种,处理的方法都一样
1). alert
2). confirm
3). prompt
2.1 警告框处理方法
1. text --> 返回alert/confirm/prompt中的文字信息
2. accept() --> 接受对话框选项
3. dismiss() --> 取消对话框选项
2.2 调用方法
1. 获取警告框
alert=driver.switch_to.alert
2. 调用
alert.text
alert.accept()
alert.dismiss()
2.3 处理警告框-总结
...
# 定位alerta按钮
driver.find_element_by_id("alerta").click()
# 获取警告框
alert=driver.switch_to.alert
# 打印警告框文本
print(alert.text)
# 接受警告框
alert.accept()
# 取消警告框
#alert.dismiss()
...
3. 滚动条操作
说明:WebDriver类库中并没有直接提供对滚动条进行操作方法,但是它提供了可调用JavaScript脚本的方法,所
以我们可以通过JavaScript脚本来达到操作滚动条的目的;
备注:
1). 滚动条:一种可控制程序显示范围的组件
2). JavaScript:一种流行脚本语言,可以操作HTML标签;
JavaScript学习资料:http://www.w3school.com.cn/js/js_intro.asp
3.1 为什么要学习滚动条操作?
1. 在HTML页面中,由于前端技术框架的原因,页面元素为动态显示,元素根据滚动条的下拉而被加载
2. 页面注册同意条款,需要滚动条到最底层,才能点击同意
需求
案例-1 注册页面A,打开页面2秒后,滚动条拉倒最底层
需求实现分析:
1. 设置JavaScritp脚本控制滚动条 js="window.scrollTo(0,1000)"
(0:左边距;1000:上边距;单位像素)
2. WebDriver调用js脚本方法 driver.execute_script(js)
3.2 控制滚动条实现代码
...
# 最底层
js1="window.scrollTo(0,1000)"
# 最顶层
js2="window.scrollTo(0,0)"
# 执行最底层
driver.execute_script(js1)
# 执行最顶层
driver.execute_script(js2)
...
3.3 滚动条总结
1. WebDriver控制滚动方法
2. JavaScript控制滚动条语句
备注:js控制滚动条语句有很多种,如:js=document.documentElement.scrollTop=1000;但是推荐使用JS调用
window句柄去控制;