目录
1.3 move_to_element() 悬停(将鼠标移到某个元素上)
1.4 click_and_hold() 按下鼠标左键在一个元素上
4.2 使用webdriver的execute_script(js脚本)的方法执行js脚本实现滚动条操作
先在PyCharm写入以下代码
# 导包
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
1.鼠标事件
1.1 context_click() 鼠标右击
#选择需要鼠标右击的目标元素
right = driver.find_element_by_css_selector('a[title="自动化相关"]')
#执行鼠标右击操作
ActionChains(driver).context_click(right).perform()
1.2 double_click() 双击
# 定位到要双击的元素
double_click = driver.find_element_by_id("kw")
# 双击操作
ActionChains(driver).double_click(double_click).perform()
1.3 move_to_element() 悬停(将鼠标移到某个元素上)
# 定位到要悬停的元素
above = driver.find_element_by_link_text("设置")
# 悬停操作
ActionChains(driver).move_to_element(above).perform()
1.4 click_and_hold() 按下鼠标左键在一个元素上
#定位到鼠标按下左键的元素
left=driver.find_element_by_xpath("设置")
#对定位到的元素执行鼠标左键按下的操作
ActionChains(driver).click_and_hold(left).perform()
1.5 drag_and_drop()鼠标拖动
# 元素1
div1 = driver.find_element_by_id('div1')
# 元素2
div2 = driver.find_element_by_id('div2')
# 把元素1从一个位置,拖动到另外一个元素2的位置
ActionChains(driver).drag_and_drop(div1,div2).perform()
#指定坐标点的位置进行拖动
ActionChains(driver).drag_and_drop_by_offset(目标元素, x轴坐标, y轴坐标)
2.键盘事件
键盘的使用必须和 send_keys 结合起来
2.1 键盘写入tab键
driver.find_element_by_id('kw').send_keys(Keys.TAB)
2.2 键盘写入回车键(Enter)
driver.find_element_by_id('kw').send_keys(Keys.ENTER)
2.3 键盘写入删除键(Backspace)
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)
2.4 键盘写入空格键(Space)
driver.find_element_by_id('kw').send_keys(Keys.SPACE)
2.5 键盘写入回退键(Esc)
driver.find_element_by_id('kw').send_keys(Keys.ESCAPE)
2.6 键盘写入全选(Ctrl+A)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')
3.下拉框选择
通过Select定位
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
ele = driver.find_element_by_id('select')
select = Select(ele)
3.1 通过value值来选择下拉选项
Select(元素).select_by_value(value值)
select.select_by_value("gz")
3.2 通过索引值进行定位
Select(元素).select_by_index(索引值) # 索引值从0开始
select.select_by_index(3)
3.3 通过文本值进行定位
Select(元素).select_by_visible_text(文本值)
select.select_by_visible_text('上海')
4.滚动条处理
在webdriver里面本身没有提供对滚动条的操作,但是提供了一个执行js脚本的方法 因此可以通过js脚本来执行滚动条上下滑动
4.1 准备js脚本
js = 'window.scrollTo(0,1000)'
4.2 使用webdriver的execute_script(js脚本)的方法执行js脚本实现滚动条操作
driver.execute_script(js)
4.3 聚焦到某个元素位置
# 1.定位需要聚焦的元素
ele = driver.find_element_by_id('alerta')
# 2.聚焦元素的js脚本
js = 'arguments[0].scrollIntoView();'
# 3.执行脚本传入元素
driver.execute_script(js,ele)
5.iframe操作
iframe是前端常用的一个标签,用于HTML页面的嵌套,会导致嵌套的页面元素能定位,但是实际上元素不在本页面,想要定位到iframe里面的元素,需要进行页面的切换.
5.1 通过iframe的name或者id值切换页面
driver.switch_to.frame(name值或者id值)
5.2 通过iframe的id进行页面切换
driver.switch_to.frame(索引值) # 索引从0开始
5.3 通过元素定位来切换
driver.switch_to.frame(定位的元素)
5.4 退出嵌套页面
# 1.退出所有的嵌套页面
driver.switch_to.default_content()
# 2.只退出一层嵌套
driver.switch_to.parent_frame()
6.多窗口切换
窗口切换:在超链接标签(a)里面存在 target=_blank 的时候点击会打开一个新的页面
6.1 获取窗口句柄
driver.current_window_handle #获取当前页面(原页面)的句柄
driver.window_handles #获取所有页面的句柄,返回一个列表
6.2 切换窗口
driver.switch_to.window(句柄)
7.弹窗处理
7.1 通过js脚本移除target属性
# 1.准备js脚本
js = 'document.getElementById("fw").removeAttribute("target")'
# 2.执行js脚本去掉target属性
driver.execute_script(js)
driver.find_element_by_id('fw').click()
7.2 原生弹窗
alert:只有一个确定按钮 confirm:有一个确定按钮,一个取消按钮 prompt:有一个输入框,一个确定按钮,一个取消按钮
'''
alert:
变量 = driver.switch_to.alert
变量.accept() 点击确定
confirm:
变量 = driver.switch_to.alert
变量.accept() 点击确定
变量.dismiss() 点击取消
prompt:
变量 = driver.switch_to.alert
变量.accept() 点击确定
变量.dismiss() 点击取消
变量.send_keys(内容) 输入内容
'''
7.3 自定义的弹窗
自定义的弹窗没有提供的方法去去除,可以通过执行js脚本来去除自定义的弹窗
# 1.js脚本,把显示属性设置为空
js = 'document.getElementById("iframe_company_mini_div").style.display ="none"'
# 2.执行js脚本
driver.execute_script(js)