下拉框
- 需求
- ⽅式
1、使⽤css或xpth (推荐)
2、使⽤专属Select类
# 点击⼴州
driver.find_element(By.CSS_SELECTOR, "[value='gz']").click()
sleep(2)
driver.find_element(By.CSS_SELECTOR, "[value='sh']").click()
sleep(2)
driver.find_element(By.CSS_SELECTOR, "[value='bj']").click()
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
# 使⽤Select类来实现
# 1、定位下拉框元素 select
el = driver.find_element(By.CSS_SELECTOR,"#selectA")
# 2、实例化Select对象
select = Select(el)
# 3、使⽤下标定位⼴州
select.select_by_index(2)
sleep(2)
# 使⽤value定位上海
select.select_by_value("sh")
# 使⽤⽂本定位 北京
sleep(2)
select.select_by_visible_text("A北京")
弹窗
- 如果⻚⾯操作过程中,有弹窗出现,不处理,⽆法继续对⻚⾯操作。
- js原⽣弹窗(警告框、输⼊框、提示框)必须处理
- 开发使⽤标签⾃定义弹窗效果 (不⽤处理,正常操作即可。)
- 获取弹窗对象
- 点⽤同意或取消⽅法
点击弹窗
driver.find_element(By.ID,"alerta").click()
sleep(2)
# 获取弹窗对象
el = driver.switch_to.alert
# 处理弹窗 同意/取消
# el.dismiss() # 取消
# print("弹出⽂本:",el.text)
el.accept() # 同意
sleep(2)
# 输⼊⽤户名
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
滚动条
有些⻚⾯场景,必须滚动条拉倒最底下才做某事
如:注册⻚⾯,阅读完需求,协议才能勾选,此时就必须拖动滚动条。
1、定义js语句
2、调⽤执⾏js⽅法
# js -> 向下滑动10000像素
# js_down = "window.scrollTo(0,10000)"
# 动态执⾏滑倒底部 向下滑动滚动条⾼度
# js(0,10000) 第⼀个0为⽔平滚动条
js_down = "window.scrollTo(0,document.body.scrollHeight)"
# 执⾏js⽅法
driver.execute_script(js_down)
sleep(2)
# js—> 向上
js_top = "window.scrollTo(0,0)"
driver.execute_script(js_top)
鼠标操作
- 方法
1、双击⽅法
2、右击⽅法
3、悬停
4、拖拽
- 示例
from selenium.webdriver import ActionChains
# 获取ActionChains对象
action = ActionChains(driver)
# 练习 1
# 查找注册按钮
el = driver.find_element(By.CSS_SELECTOR,"button")
sleep(2)
# 调⽤悬停⽅法
action.move_to_element(el).perform()
# # 练习2
# username = driver.find_element(By.CSS_SELECTOR,"#userA")
# # 右击
# action.context_click(username).perform()
# 练习3
username = driver.find_element(By.CSS_SELECTOR,"#userA")
username.send_keys("admin")
sleep(3)
# 双击
action.double_click(username).perform()
拖拽
action = ActionChains(driver)
div1 = driver.find_element(By.CSS_SELECTOR, "#div1")
div2 = driver.find_element(By.CSS_SELECTOR, "#div2")
action.drag_and_drop(div1, div2).perform()
⾼级API
- 什么是等待?
代码执⾏过程中,第⼀次未找到元素,先不抛出异常。激活等待时间,在等待过程中如果找到元素
就执⾏。
- 为什么要等待?
由于⽹络或配置原因,导致元素未加载出来,⽽代码已执⾏,会触发异常。
- 元素等待类型
1、隐式等待
2、显示等待
3、强制等待 -->time.seep(秒)
隐式元素等待
- 说明: 针对全部元素⽣效
- ⽅法: driver.implicitly_wait(秒)
- 提示:在项⽬中,如果未封装⾃动化框架时,推荐使⽤。
显示等待
- 说明: 针对单个元素⽣效,可以修改查找频率和超时时间。
- 特点: 查找并返回元素
- ⽤法
from selenium.webdriver.support.wait import WebDriverWait
# 2、显示等待 -> 返回查找到的元素
el = WebDriverWait(driver,10,0.5).until(lambda x:x.find_element(By.CSS_SELECTOR,"#userAA"))
el.send_keys("admin")
- 等待对比