1.鼠标事件
ActionChains 类鼠标操作的常用方法:
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停在一个元素上
click_and_hold() 按下鼠标左键在一个元素上
1.1导入包:ActionChains
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
1.2.定位需要鼠标操作的元素
div1 = driver.find_element_by_id('div1')
div2 = driver.find_element_by_id('div2')
1.3.执行鼠标事件
鼠标拖动
ActionChains(driver).drag_and_drop(原始元素,目标元素).perform()
指定坐标点的位置进行拖动(重要) x轴和y轴以左上角的原点位置为(0,0)
ActionChains(driver).drag_and_drop_by_offset(目标元素, x轴坐标, y轴坐标).perform()
double_click() 双击
ActionChains(driver).double_click(元素).perfprm
context_click() 右击
ActionChains(driver).context_click(元素).perfprm
move_to_element() 鼠标悬停在一个元素上
ActionChains(driver).move_to_element(元素).perfprm
click_and_hold() 按下鼠标左键在一个元素上
ActionChains(driver).click_and_hold(元素).perfprm
2.键盘事件
导入:
1.from selenium import webdriver
from selenium.webdriver.common.keys import Keys
使用Keys类来处理键盘操作:
send_keys(Keys.BACK_SPACE) 删除键(Backspace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) Tab键
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
5.键盘事件
6."""
7.driver = webdriver.Firefox()
8.driver.get("https://www.baidu.com")
9.driver.find_element_by_id("kw").send_keys("Selenium")
10.time.sleep(2)
11.# Ctrl+A 全选操作
12.driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
13.time.sleep(2)
14.# Ctrl+C 复制操作
15.driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c')
time.sleep(2)
3.下拉菜单选
导入:Select
from selenium import webdriver
import time
# 导入
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome()
通过id定位下拉框:
# 通过id定位下拉框
select = Select(driver.find_element_by_id('selectA'))
选择:
# 通过value来选择
select.select_by_value(value值)
time.sleep(3)
# 通过索引选择
select.select_by_index(索引值) #索引从0开始
time.sleep(3)
#
# 通过文本选择
select.select_by_visible_text('A广州')
time.sleep(3)
4.滚动条操作
# 滚动条操作:
# 1.js = 'window.scrollTo(x,y)' 左右x轴,上下y轴
# 2.driver.execute_script(js脚本)
js = 'window.scrollTo(0,1000)'
time.sleep(3)
driver.execute_script(js)
time.sleep(3)
5.聚焦到某个元素位置
li = driver.find_element_by_css_selector('input[onclick="al()"]')
js = 'arguments[0].scrollIntoView();'
driver.execute_script(js,li)
time.sleep(3)
6.iframe操作
iframe是什么? iframe是前端常用的一个标签,用于HTML页面的嵌套 会导致嵌套的页面元素能定位,但是实际上元素不在本页面 想要定位到iframe里面的元素,需要进行页面的切换
什么时候去使用切换的方法? 1.当你定位元素能够定位但是在selenium里面找不到元素的时候去判断是否因为 iframe嵌套引起 2.在F12 elements里面定位该元素,然后在下方绝对路径里面查看是否有 iframe frame 存在则需要进行页面的切换才能操作
语法
怎么进行页面切换:
driver.switch_to.frame(name值或者id值)
driver.switch_to.frame(索引值) 索引从0开始
driver.switch_to.frame(定位的元素)
退出嵌套页面
1.退出所有的嵌套页面
driver.switch_to.default_content()
2.只退出一层嵌套
driver.switch_to.parent_frame()
iframe场景的应用场景:
1.登录
2.富文本编辑框
3.后台的菜单栏
7.多窗口切换
在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。switch_to.window()方法可以实现在不同的窗口之间切换
current_window_handle 获得当前窗口句柄
window_handles 获取所有窗口句柄
switch_to.window() 切换窗口
步骤
1.0 获取当前窗口句柄
driver.current_window_handle
1.1 点击触发多窗口出现的元素(链接)
1.2 获取所有窗口的句柄
driver.window_handles
1.3 进入到新窗口中
driver.switch_to.window(新窗口句柄)
1.4 操作新窗口的元素
1.5 退出新窗口
driver.switch_to.window(原窗口句柄)
8.单选框和复选框
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('file:///C:/Users/Administrator/Desktop/%E8%AF%BE%E4%BB%B6/%E8%AF%BE%E4%BB%B6/%E7%BB%83%E4%B9%A0%E9%A1%B5%E9%9D%A2/%E6%B3%A8%E5%86%8C%E5%AE%9E%E4%BE%8B.html')
# 单选框:
# 在HTML里面,type属性是radio,并且一组的单元name属性值全部一样
# li = driver.find_element_by_id('jz')
#
# # 判断元素是否选择
# li.is_selected()
# li.click()
# time.sleep(2)
# 多选框在HTML代码里面,type属性是checkbox,name属性是相同的
# 获取所有的元素
li = driver.find_elements_by_name('checkbox')
print(li)
time.sleep(2)
# 遍历全部选中
# for i in li:
# if not i.is_selected():
# i.click()
# time.sleep(2)
li2 = ('购物','汽车')
# 遍历全部选中
for i in li:
if i.get_attribute('value') in li2: # 判断
if not i.is_selected():
i.click()
time.sleep(2)
driver.quit()
9.弹窗处理
原生弹窗:
prompt弹窗:有一个输入框,一个确认按钮,一个取消按钮
alert弹窗:一个确认按钮
confirm弹窗:一个确认按钮,一个取消按钮
# alert弹窗处理:
driver.find_element_by_id('alert').click()
time.sleep(2)
# 获取页面所有弹窗
li = driver.switch_to.alert
time.sleep(2)
print(li)
# 点击确认按钮
li.accept()
# confirm弹窗处理
driver.find_element_by_id('confirm').click()
li1 = driver.switch_to.alert
time.sleep(2)
# 点击确认按钮
li1.accept()
time.sleep(2)
# 点击取消
li1.dismiss()
time.sleep(2)
# prompt弹窗处理
# 1.根据id定位并点击
driver.find_element_by_id('prompt').click()
#
# # 获取页面所有弹窗
li1 = driver.switch_to.alert
time.sleep(2)
#
# # 输入
li1.send_keys('111')
time.sleep(2)
# 点击确认按钮
li1.accept()
time.sleep(2)
# 去除自定义弹窗:
# js脚本去除,把显示属性设置为None
# 变量 = document.getElementById(id定位)
# 设置为空:
# 变量.style.display = 'None'
# 执行js脚本:
# driver.execute_script(变量)