天天看点

Selenium API-鼠标与键盘事件

鼠标事件

Selenium 中的鼠标事件被封装在

ActionChains

类中,导入方式:

from selenium.webdriver.common.action_chains import ActionChains

官方文档:selenium.webdriver.common.action_chains

ActionChains

常用的方法:

序号 方法/属性 描述
1 click(self, on_element=None) 单击鼠标左键
2 click_and_hold(self, on_element=None) 点击鼠标左键,不松开
3 context_click(self, on_element=None) 点击鼠标右键
4 double_click(self, on_element=None) 双击鼠标右键
5 drag_and_drop(self, source, target) 拖拽到某个元素然后松开
6 drag_and_drop_by_offset(self, source, xoffset, yoffset) 拖拽到某个坐标然后松开
7 key_down(self, value, element=None) 按下键盘上的某个按键
8 key_up(self, value, element=None) 松开键盘上的某个按键
9 move_by_offset(self, xoffset, yoffset) 鼠标从当前位置移动到某个坐标
10 move_to_element(self, to_element) 鼠标移动到某个元素
11 move_to_element_with_offset(self, to_element, xoffset, yoffset) 移动到距离某个元素(左上角坐标)多少距离的位置
12 perform(self) 执行动作链中的所有动作
13 def release(self, on_element=None) 在某个元素位置松开鼠标左键
14 send_keys(self, *keys_to_send) 发送某个键到当前焦点的元素
15 send_keys_to_element(self, element, *keys_to_send) 发送某个键到指定元素
注意:当整个动作链编写完成之后,必须调用

perform()

方法来执行所有动作,否则动作不生效

实例操作

# 模拟事件:鼠标移动到商品分类列表--食物,在二级分类列表中点击“小龙虾”
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()  # 打开浏览器
driver.maximize_window()  # 浏览器最大化
driver.get("https://www.jd.com")  # 跳转至京东首页
sleep(2)
element = driver.find_element_by_xpath("//li[@data-index='11']")  # 移动到的元素
action = ActionChains(driver).move_to_element(element)  # 动作:移动鼠标到指定元素
action.perform()  # 执行所有动作
sleep(2)
target_element = driver.find_element_by_link_text("小龙虾")  # 目标元素
target_element.click()  # 点击
sleep(2)

driver.quit()
           

键盘事件

Selenium 中的键盘事件被封装在

Keys

类中,导入方式:

from selenium.webdriver.common.keys import Keys

官方文档:selenium.webdriver.common.keys

实例操作

# 模拟事件:在百度输入框中输入:selenium 自动化测试,按2次删除键,全选,剪切,复制
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()  # 打开浏览器
driver.maximize_window()  # 浏览器最大化
driver.get("https://www.baidu.com/")  # 跳转至百度首页
sleep(1)
element = driver.find_element_by_id("kw")
element.send_keys("selenium 自动化测试")
sleep(1)
element.send_keys(Keys.BACKSPACE)  # 按删除键
sleep(1)
element.send_keys(Keys.BACKSPACE)  # 按删除键
sleep(1)
element.send_keys(Keys.CONTROL, "a")  # 按Ctrl + a
sleep(1)
element.send_keys(Keys.CONTROL, "x")  # 按Ctrl + x
sleep(1)
element.send_keys(Keys.CONTROL, "v")  # 按Ctrl + v
sleep(3)

driver.quit()  # 关闭浏览器