selenium鼠标操作和键盘操作
鼠标操作
在 WebDriver 中,与鼠标操作相关的方法都封装在 ActionChains 类中
# 引入 ActionChains 类 from selenium.webdriver import ActionChains
常用方法:
- perform():执行 ActionChains 类中存储的所有行为
- click():左击
- context_click():右击
- double_click():双击
- move_to_element():鼠标悬停
- move_to_element_with_offset():先找到元素,再根据元素位置偏移指定偏移量
- click and hold():长按
- drag_and_drop():将源元素拖动到目标元素处
- drag_and_drop_by_offset(): 将源元素拖动指定偏移量
主要是调用其他操作方法后,都要再次调用这个方法perform(),表示执行某个鼠标操作
from selenium.webdriver import ActionChains from selenium import webdriver driver = webdriver.Chrome("../resources/chromedriver.exe") # 创建实例 chains = ActionChains(driver) # 访问网址 driver.get("file:///C:/test.html") # 登录按钮 username = driver.find_element_by_id("username") login_btn = driver.find_element_by_class_name("login") password = driver.find_element_by_id("password") # 左键点击 chains.click(username).perform() # 右键点击 chains.context_click(username).perform() # 双击 chains.double_click(password).perform()
# 悬停到设置按钮 chains.move_to_element(login_btn).perform() # 悬停到指定偏移量 chains.move_to_element_with_offset(login_btn, 2, 2).perform()
# 长按 chains.click_and_hold(login_btn).perform()
# 拖动1 chains.drag_and_drop(source=username, target=password) # 拖动2 chains.drag_and_drop_by_offset(source=username, xoffset=20, yoffset=20)
键盘操作
send_keys()方法除了可以用来模拟键盘输入,还可以用它来输入键盘上 的按键,甚至是组合键,如 Ctrl+a、Ctrl+c 等
在使用键盘按键方法前需要先导入 Keys 类
from selenium.webdriver.common.keys import Keys
示例:
from selenium import webdriver # 调用 Keys 模块 from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome() driver.get("http://www.baidu.com")
# 在输入框输入内容 driver.find_element_by_id("kw").send_keys("selenium")
# 删除多输入的一个 m driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
# 输入空格键+“教程” driver.find_element_by_id("kw").send_keys(Keys.SPACE) driver.find_element_by_id("kw").send_keys("教程")
# 输入组合键 Ctrl+a,全选输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
# 输入组合键 Ctrl+x,剪切输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
# 输入组合键 Ctrl+v,粘贴内容到输入框 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
# 用回车键代替单击操作 driver.find_element_by_id("su").send_keys(Keys.ENTER)
driver.quit()
常用的键盘操作
- 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)
- send_keys(Keys.CONTROL,'c'):复制(Ctrl+c)
- send_keys(Keys.CONTROL,'x'):剪切(Ctrl+x)
- send_keys(Keys.CONTROL,'v'):粘贴(Ctrl+v)
- send_keys(Keys.F1):键盘 F1
- ……
- send_keys(Keys.F12):键盘 F12