Select类
Select类是Selenium为操作select标签特殊封装的。
实例化对象:select = Select(element)
element: <select>标签对应的元素, 通过元素定位方式获取,
例如: driver.find_element_by_id("selectA")
操作方法:
1. select_by_index(index) --> 根据option索引来定位, 从0开始
2. select_by_value(value) --> 根据option属性 value值来定位
3. select_by_visible_text(text) --> 根据option显示文本来定位
Select类实现步骤分析
1. 导包 Select类 --> from selenium.webdriver.support.select import Select
2. 实例化Select类 select = Select(driver.find_element_by_id("selectA"))
3. 调用方法: select.select_by_index(index)
# 需求: 使用‘注册A.html’页面, 完成对城市的下拉框的操作
# 1).选择‘广州’
# 2).暂停2秒, 选择‘上海’
# 3).暂停2秒, 选择‘北京’
from time import sleep
from selenium import webdriver
#导包
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.get("D:\python\web自动化\显式、隐式等待\注册A.html")
select = Select(driver.find_element_by_id("selectA"))
select.select_by_index(2) # 根据索引实现
sleep(2)
select.select_by_value("sh") # 根据value属性实现
sleep(2)
select.select_by_visible_text("A北京") # 根据文本内容实现
sleep(2)
driver.quit()
弹出框处理
为什么需要处理弹框
如果页面出现弹框不进行处理,那么接下来的操作将不生效
网页中常用的弹出框有三种
- 1. alert 警告框
- 2. confirm 确认框
- 3. prompt 提示框
弹出框处理方法
Selenium中对处理弹出框的操作, 有专用的处理方法; 并且处理的方法都一样
1. 切换到对话框
alert = driver.switch_to.alert2. 处理对话框
- alert.text 返回alert/confirm/prompt中的文字信息
- alert.accept() 同意对话框选项
- alert.dismiss() 取消对话框选
注:无论以上哪个对话框都可以使用同意、取消,因为调用的是后台的事件,跟页面显示的按钮数量无关;
# 需求: 打开注册A.html页面, 完成以下操作:
# 1).点击 alert 按钮
# 2).关闭警告框
# 3).输入用户名: admin
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("D:\python\web自动化\显式、隐式等待\注册A.html")
# 定位alerta按钮
driver.find_element_by_id("alerta").click()
sleep(2)
# 获取警告框
alert = driver.switch_to.alert
# 打印警告框文本
print(alert.text)
sleep(2)
# 接受警告框
alert.accept()
sleep(2)
# 取消警告框
alert.dismiss()
sleep(2)
driver.find_element_by_css_selector("#userA").send_keys("admin")
sleep(2)
driver.quit()
滚动条操作
selenium中并没有直接提供操作滚动条的方法, 但是它提供了可执行JavaScript脚本的方法, 所以我们可以通过JavaScript脚本来达到操作滚动条的目的
1. 设置JavaScript脚本控制滚动条
js = "window.scrollTo(0,1000)"(0:左边距; 1000:上边距; 单位像素)
2. selenium调用执行JavaScript脚本的方法
driver.execute_script(js)
# 需求: 打开注册页面A, 暂停2秒后, 滚动条拉到最底层
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("D:\python\web自动化\显式、隐式等待\注册A.html")
sleep(2)
# 最底层
js1 = "window.scrollTo(0,10000)"
driver.execute_script(js1)
sleep(2)
# 最顶层
js2 = "window.scrollTo(0,0)"
driver.execute_script(js2)
sleep(2)
driver.quit()