目录
一.鼠标事件
1.导包
# 导包
from selenium.webdriver import ActionChains
# 实例化一个鼠标对象
ActionChains(driver).方法名(元素).preform()
2.双击
ActionChains(driver).double_click(元素).perform()
3.悬停
ActionChains(driver).move_to_element(元素).perform()
4.右击
ActionChains(driver).context_click(元素).perform()
5.按下鼠标左键
ActionChains(driver).click_and_hold(元素).perform()
6.拖动
ActionChains(driver).drag_and_drop(原始元素,目标元素).perform()
7.拖动到指定像素位置 (x轴和y轴以左上角的原点位置为(0,0)
ActionChains(driver).drag_and_drop_by_offset(目标元素, x轴坐标, y轴坐标).perform()
二.键盘事件(必需结合send_keys一起使用)
1.导包及前提操作条件
#导包1
from selenium import webdriver
#导包2
from selenium.webdriver.common.keys import Keys
#实例化对象
driver = webdriver.Chrome()
#打开浏览器
driver.get('http://www.baidu.com')
#通过id定位输入内容
driver.find_element_by_id('id').send_keys('内容')
2.键入BACKPAC键
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)
3.键入tab键
driver.find_element_by_id('kw').send_keys(Keys.TAB)
4.键入回车键
driver.find_element_by_id('kw').send_keys(Keys.ENTER)
三.下拉框选择
1.导包
from selenium.webdriver.support.select import Select
2.通过value值来选择下拉框
Select(元素).select_by_value(value值)
3.通过索引来选择(索引从0开始)
Select(元素).select_by_index(索引值)
4.通过文本定位
Select(元素).select_by_visible_text(文本值)
四.滚动条
在webdriver里面本身没有提供对滚动条的操作,但是提供了一个执行js脚本的方法 因此可以通过js脚本来执行滚动条上下滑动
1.准备js脚本(左右滑动改变x轴,上下滑动改变y轴)
window.scrollTo(x,y)
2.使用webdriver的execute_script(js脚本)的方法执行js脚本实现滚动条操作
driver.execute_script(js)
聚焦到某个元素位置:
1.定位需要聚焦的元素
ele = driver.find_element_by_id('元素')
2.准备聚焦元素的脚本
js = 'arguments[0].scrollIntoView();'
3.执行传入的元素和脚本
driver.execute_script(js,ele)
五.ifram
iframe是前端常用的一个标签,用于HTML页面的嵌套 会导致嵌套的页面元素能定位,但是实际上元素不在本页面,想要定位到iframe里面的元素,需要进行页面的切换
怎么进行页面切换:
1.通过name或者id切换
driver.switch_to.frame(name值或者id值)
2.通过索引切换(索引从0开始)
driver.switch_to.frame(索引值)
3.通过元素定位
driver.switch_to.frame(定位的元素)
退出嵌套页面:
1.退出所有的嵌套页面
driver.switch_to.default_content()
2.只退出一层嵌套
driver.switch_to.parent_frame()
什么时候去使用切换的方法 1.当你定位元素能够定位但是在selenium里面找不到元素的时候去判断是否因为 iframe嵌套引起 2.在F12 elements里面定位该元素,然后在下方绝对路径里面查看是否有 iframe frame 存在则需要进行页面的切换才能操作
常见应用场景: 1.登录 2.富文本编辑框 3.后台的菜单栏
六.多窗口切换
在超链接标签(a)里面存在 target=_blank 的时候点击会打开一个新的页面
方法1:
获取句柄
1.获取当前页面句柄:
driver.current_window_handle
2.获取所有句柄
driver.window_handles
切换窗口
driver.switch_to.window(句柄)
方法2:
1.通过js脚本移除target属性
js = 'document.getElementById("fw").removeAttribute("target")'
2.执行脚本
driver.execute_script(js)
3.移除target属性后就可以使用浏览器回退方式进行操作
七.弹窗
原生弹窗:
alert:只有一个确认按钮
confirm:有取消有确定按钮
prompt:有一个输入框,确定,取消
alert:
# 获取原生弹窗
变量 = driver.switch_to.alert
#点击确定
变量.accept()
confirm:
#获取原生弹窗
变量 = driver.switch_to.alert
#点击确定
变量.accept()
#点击取消
变量.dismiss()
priompt:
# 获取原生变量
变量 = driver.switch_to.alert
#输入内容
变量.send_keys(内容)
#点击确定
变量.accept()
#点击取消
变量.dismiss()
自定义弹窗:
自定义的弹窗没有提供的方法去去除,可以通过执行js脚本来去除自定义的弹窗
1.准备js脚本,把显示属性设置为空
js = 'document.getElementById("iframe_company_mini_div").style.display ="none"'
2.执行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()
只选择部分:
opinion=('value值1','value值2')
for 变量 in 元素:
# 判断获取的属性是否存在选项中
if 变量.get_attribute('value') in option:
# 判断是否已经被选中
if not 变量.is_selected():
# 没有选中才进行点击选中
ele.click()