Selenium-下拉选择框、弹出框、滚动条操作
Selenium-下拉选择框、弹出框、滚动条操作
- 1、下拉选择框操作
- 1.1 如何操作下拉选择框?
- 1.2 Select类
- 1.2.1 Select类实现步骤分析
- 2、弹出框处理
- 2.1 案例
- 2.2 弹出框处理方法
- 2.3 示例代码
- 3、滚动条操作
- 3.1 为什么要学习滚动条操作?
- 3.2 实现方式
- 3.3 案例
- 3.4 滚动条拉到最低和最顶层
1、下拉选择框操作
说明:下拉框就是HTML中<select>元素
1.1 如何操作下拉选择框?
# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
driver = webdriver.Firefox()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"D:\web自动化素材\课堂素材\注册A.html"
driver.get(url)
"""
目标: 默认北京A
暂停2秒
1. 定位 A上海
2. 暂停2秒
3. 定位 A广州
"""
"""方式1:使用CSS定位"""
sleep(2)
# 使用css定位来操作 A上海
driver.find_element_by_css_selector("[value='sh']").click()
sleep(2)
# 使用css定位 A广州
driver.find_element_by_css_selector("[value='gz']").click()
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()
========================================
# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"D:\web自动化素材\课堂素材\注册A.html"
driver.get(url)
"""
目标: 使用Select类实现操作option选项
需求:
暂停2秒
1. 定位 A上海
2. 暂停2秒
3. 定位 A广州
步骤:
1. 导包 Select类
2. 获取Select对象
匿名:Select(element).select_by_index() # 通过下标
实名:select = Select(element)
调用:select.select_by_index()
注意:
1. Select类是通过select标签来控制其下的option元素
2. element:只能是select标签
"""
"""方式2:使用Select完成需求"""
el = driver.find_element_by_css_selector("#selectA")
sleep(2)
"""通过 下标形式访问"""
# 切换 上海
# Select(el).select_by_index(1)
# sleep(2)
# Select(el).select_by_index(2)
"""通过 value值形式访问"""
# 获取Select引用对象
# sel = Select(el)
# 切换 上海
# sel.select_by_value("sh")
# sleep(2)
# 切换 广州
# sel.select_by_value("gz")
"""通过 显示文本切换"""
sleep(2)
# 切换 上海
Select(el).select_by_visible_text("A上海")
sleep(2)
# 切换广州
Select(el).select_by_visible_text("A广州")
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()
1.2 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显示文本来定位
1.2.1 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)
# 示例代码
#导包 from selenium.webdriver.support.select import Select
select = Select(driver.find_element_by_id("selectA"))
select.select_by_index(2) # 根据索引实现
select.select_by_value("sh") # 根据value属性实现
select.select_by_visible_text("A北京") # 根据文本内容实现
2、弹出框处理
网页中常用的弹出框有三种
1. alert 警告框
2. confirm 确认框
3. prompt 提示框
2.1 案例
需求:打开注册A.html页面,完成以下操作:
1).点击 alert 按钮
2).关闭警告框
3).输入用户名:admin
# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
driver = webdriver.Firefox()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = r"D:\web自动化素材\课堂素材\注册A.html"
driver.get(url)
"""
需求:
1. 点击 alert按钮
2. 输入用户名 admin
"""
# 定位 alert按钮 并 点击
driver.find_element_by_css_selector("#alerta").click()
# 切换 到alert
# 默认返回的alert对话框对象
at = driver.switch_to.alert
# 处理 对话框
# 同意
at.accept()
# 获取文本
# print("警告信息:", at.text)
# 取消
# at.dismiss()
# 定位 用户名 输入admin
driver.find_element_by_css_selector("#userA").send_keys("admin")
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()
# 问题
1. 按钮被点击后弹出警告框,而接下来输入用户名的语句没有生效
2. 什么问题导致的?
3. 如何处理警告框?
2.2 弹出框处理方法
说明:Selenium中对处理弹出框的操作,有专用的处理方法;并且处理的方法都一样
1. 获取弹出框对象
alert = driver.switch_to.alert
2. 调用
alert.text --> 返回alert/confirm/prompt中的文字信息
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、滚动条操作
滚动条:一种可控制页面显示范围的组件
3.1 为什么要学习滚动条操作?
1. 在HTML页面中,由于前端技术框架的原因,页面元素为动态显示,元素根据滚动条的下拉而被加载
2. 页面注册同意条款,需要滚动条到最底层,才能点击同意
3.2 实现方式
说明:selenium中并没有直接提供操作滚动条的方法,但是它提供了可执行JavaScript脚本 的方法,所以我们可以通过JavaScript脚本来达到操作滚动条的目的。
1. 设置JavaScript脚本控制滚动条
js = "window.scrollTo(0,1000)"
(0:左边距;1000:上边距;单位像素)
2. selenium调用执行JavaScript脚本的方法
driver.execute_script(js)
3.3 案例
# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动对象
driver = webdriver.Firefox()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)
# 打开url
url = "https://www.baidu.com"
driver.get(url)
"""
目标:滚动条操作
需求:
1、打开百度,输入csdn并点击百度一下
1. 启动暂停2秒
2. 滚动条拉倒最底下
"""
driver.find_element_by_css_selector("#kw").send_keys("csdn")
driver.find_element_by_css_selector("#su").click()
sleep(2)
# 第一步 设置js控制滚动条语句
js = "window.scrollTo(0, 10000)"
# 第二步 调用执行js语句方法
driver.execute_script(js)
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()
3.4 滚动条拉到最低和最顶层
# 最底层
js1 = "window.scrollTo(0,10000)"
driver.execute_script(js1)
# 最顶层
js2 = "window.scrollTo(0,0)"
driver.execute_script(js2)