selenium的常用API

本文介绍了使用SeleniumWebdriver进行网页自动化测试时,如何操作鼠标事件如双击、右击、拖放,键盘事件如按键输入,以及处理下拉框选择、滚动条操作、iframe切换、窗口管理、弹窗处理和选择框操作。这些技术在网页自动化和Web应用测试中非常常见。

鼠标事件

1.导包

# 1.导包
from selenium import webdriver
from selenium.webdriver import ActionChains
# 2.实例化浏览器
driver = webdriver.Chrome()
# 3.通过对象的get方法打开指定网址网页
driver.get("http://www.baidu.com")
# 4.定位到指定元素
ele = driver.find_element_by_link_text('文本')
# 5.实例化鼠标对象
action_chains = ActionChains(driver)

语法

ActionChains(driver).方法名(元素).preform()

鼠标的操作方法

# 双击鼠标
ActionChains(driver).double_click(ele).perform()
# 鼠标右击
ActionChains(driver).click_and_hold(ele).perform()
# 鼠标悬停
ActionChains(driver).move_to_element(ele).perform()
# 鼠标拖动
ActionChains(driver).drag_and_drop(原始元素,目标元素).perform()
# 指定坐标点的位置进行拖动,x轴和y轴以左上角的原点位置为(0,0)
ActionChains(driver).drag_and_drop_by_offset(目标元素, x轴坐标, y轴坐标).perform()

键盘事件

# 键盘的使用必须和 send_keys 结合起来
# 定位需要点击的按钮位置并点击键盘BACK_SPACE键
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)
# 键盘写入tab键
driver.find_element_by_id('kw').send_keys(Keys.TAB)
# 键盘写入回车键
driver.find_element_by_id('kw').send_keys(Keys.ENTER)

下拉框选择

# 导包
from selenium import webdriver
from selenium.webdriver.support.select import Select
# 定位点击下拉框
driver.find_element_by_id('select').click()
# 点击选中对应的选项
driver.find_element_by_css_selector('option[value="sh"]').click()

2.通过Select定位

# 根据value值选择下拉框
Select(元素).select_by_value(value值)
# 根据索引选择下拉框
Select(元素).select_by_index(索引值)  # 索引从0开始
# 根据文本值选择下拉框
Select(元素).select_by_visible_text(文本值)

滚动条处理

在webdriver里面本身没有提供对滚动条的操作,但是提供了一个执行js脚本的方法
因此可以通过js脚本来执行滚动条上下滑动
# 1.准备js脚本
window.scrollTo(x,y)    # 左右滑动改变x轴,上下滑动改变y轴
# 2.使用webdriver的execute_script(js脚本)的方法执行js脚本实现滚动条操作
driver.execute_script(js)

聚焦到某个元素位置:

# 1.定位需要聚焦的元素
 ele = driver.find_element_by_id('alerta')
# 2.聚焦元素的js脚本
js = 'arguments[0].scrollIntoView();'
# 3.执行脚本传入元素
driver.execute_script(js,ele)

iframe操作

想要定位到iframe里面的元素,需要进行页面的切换

什么时候去使用切换的方法?

1.当你定位元素能够定位但是在selenium里面找不到元素的时候去判断是否因为 iframe嵌套引起
2.在F12 elements里面定位该元素,然后在下方绝对路径里面查看是否有 iframe frame
存在则需要进行页面的切换才能操作

怎么进行页面切换:

driver.switch_to.frame(name值或者id值)
driver.switch_to.frame(索引值)     # 索引从0开始
driver.switch_to.frame(定位的元素)

退出嵌套页面:

# 退出所有的嵌套页面
driver.switch_to.default_content()
# 只退出一层嵌套
driver.switch_to.parent_frame()
iframe场景的应用场景:1.登录 2.富文本编辑框 3.后台的菜单栏

窗口切换

在超链接标签(a)里面存在 target=_blank 的时候点击会打开一个新的页面

多窗口切换

窗口句柄
# 获取当前页面(原页面)的句柄
driver.current_window_handle
# 获取所有页面的句柄,返回一个列表
driver.window_handles

# 切换窗口
driver.switch_to.window(句柄)

窗口切换

在超链接标签(a)里面存在 target=_blank 的时候点击会打开一个新的页面
# 通过js脚本移除target属性
js = 'document.getElementById("fw").removeAttribute("target")'
driver.execute_script(js)

弹窗处理

原生弹窗

# 获取页面上原生的弹窗
driver.switch_to.alert
# 获取弹窗的文字信息
变量.text
# alert:只有一个确定按钮
变量 = driver.switch_to.alert
变量.accept()
# confirm:有一个确定按钮,一个取消按钮
变量 = driver.switch_to.alert
变量.accept()     # 点击确定
变量.dismiss()    # 点击取消
# prompt:有一个输入框,一个确定按钮,一个取消按钮
变量 = driver.switch_to.alert
变量.accept()          # 点击确定
变量.dismiss()         # 点击取消
变量.send_keys(内容)   # 输入内容

自定义弹窗

# 自定义的弹窗没有提供的方法去去除,可以通过执行js脚本来去除自定义的弹窗
# js脚本,把显示属性设置为空
 js = 'document.getElementById("iframe_company_mini_div").style.display ="none"'
# 执行js脚本
driver.execute_script(js)

选择框

单选框

# 在html代码里面 type是 radio 并且一组的单元 name属性值全部一样
# 判断元素是否选中
元素.is_selected()

多选框

# 多选框是html代码里面 type属性是 checkbox,name属性相同
# 全选
# 获取所有的元素
eles = driver.find_elements_by_name('checkbox')
# 遍历全部选中
for ele in eles:
    if not ele.is_selected():
        ele.click()
# 或者
option = ("购物", "旅游")
for ele in eles:
    # 判断获取的属性是否存在选项中
    if ele.get_attribute('value') in option:
         # 判断是否已经被选中
        if not ele.is_selected():
             # 没有选中才进行点击选中
            ele.click()
driver.quit()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值