UI自动化 Selenium页面交互

下拉框

  • 需求 alt
  • ⽅式
1、使⽤css或xpth (推荐)
2、使⽤专属Select类
  • ⽅式1:
# 点击⼴州
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()

  • ⽅式2(了解):
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北京")

弹窗

  • 为什么要处理弹窗?
  1. 如果⻚⾯操作过程中,有弹窗出现,不处理,⽆法继续对⻚⾯操作。
  • 弹窗类型?
  1. js原⽣弹窗(警告框、输⼊框、提示框)必须处理
  2. 开发使⽤标签⾃定义弹窗效果 (不⽤处理,正常操作即可。)
  • 如何处理?
  1. 获取弹窗对象
  2. 点⽤同意或取消⽅法
  • 示例
 点击弹窗
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)

鼠标操作

  • 方法 alt
1、双击⽅法
2、右击⽅法
3、悬停
4、拖拽
  • 示例 alt
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")
  • 等待对比 alt
全部评论

相关推荐

10-28 15:45
门头沟学院 C++
西南山:海康威视之前不是大规模裁员吗
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务