目录
1 鼠标事件
2 键盘事件
在Selenium中叶提供了一些关于鼠标和键盘操作的方法,比如鼠标悬浮、滑动、键盘输入等,下面跟着我一起了解一下。
1 鼠标事件
在Selenium中,将关于鼠标操作的方法封装在ActionChains类提供。
| 方法 | 说明 |
| ActionChains(driver) | 构造ActionChains对象 |
| context_click() | 执行鼠标悬停操作 |
| move_to_element(above) | 右击 |
| double_click() | 双击 |
| drag_and_drop() | 拖动 |
| move_to_element(above) | 执行鼠标悬停操作 |
| context_click() | 用于模拟鼠标右键操作,在调用时需要指定元素位置 |
| perform() | 执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作 |
下面通过一个例子来看如何使用。以百度首页为例,如果把鼠标指针移动到百度首页的设置菜单栏选项上,这时它会出现一个下拉菜单栏,如下图所示,如果鼠标移开,它就会消失。下面使用Selenium来模拟。
首先需要定位“设置” 的位置,这里我们选用XPath定位:
代码如下:
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
web = Chrome()
#访问百度首页
web.get('https://www.baidu.com/')
#定位到要悬浮的元素
above = web.find_element(by=By.XPATH, value='//*[@id="s-usersetting-top"]')
#执行鼠标悬停操作
ActionChains(web).move_to_element(above).perform()
运行效果如下:
通过前面代码可以看到,其实关键地方就ActionChains(web).move_to_element(above).perform()这行代码,使用ActionChains类去调用move_to_element(above)悬浮事件,然后再执行perform()这个方法提交动作。
2 键盘事件
send_keys()方法可以用来模拟键盘输入,除此之外,我们还可以用它来输入键盘上的按键,甚至是组合键。Keys()类提供了键盘上几乎所有按键的方法,如下图。
| 方法 | 说明 |
| send_keys(Keys.BACK_SPACE) | 删除键 |
| send_keys(Keys.SPACE) | 空格键 |
| send_keys(Keys.TAB) | 制表键 |
| send_keys(Keys.ESCAPE) | 回退键 |
| send_keys(Keys.ENTER) | 回车键 |
| send_keys(Keys.CONTROL,'a') | 全部选中 |
| send_keys(Keys.CONTROL,'c') | 复制 |
| send_keys(Keys.CONTROL,'x') | 剪切 |
| send_keys(Keys.CONTROL,'v') | 粘贴 |
| send_keys(Keys.F1) | F1 |
| send_keys(Keys.F2) | F2 |
以百度为例进行操作。
代码如下:
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
web = Chrome()
#访问百度首页
web.get('https://www.baidu.com/')
#找到输入框,输入端午节6
web.find_element(by=By.ID, value="kw").send_keys("端午节6")
time.sleep(2)
#删除多输入的6
web.find_element(by=By.ID, value="kw").send_keys(Keys.BACK_SPACE)
time.sleep(2)
#输入空格键+”赛龙舟“
web.find_element(by=By.ID, value="kw").send_keys(Keys.SPACE)
web.find_element(by=By.ID, value="kw").send_keys("赛龙舟")
time.sleep(2)
#全选输入框内容
web.find_element(by=By.ID, value="kw").send_keys(Keys.CONTROL,'a')
time.sleep(2)
#剪切输入框内容
web.find_element(by=By.ID, value="kw").send_keys(Keys.CONTROL,'x')
time.sleep(2)
#粘贴内容到输入框
web.find_element(by=By.ID, value="kw").send_keys(Keys.CONTROL,'v')
time.sleep(2)
#ENTER键进行单击操作
web.find_element(by=By.ID, value="kw").send_keys(Keys.ENTER)
运行效果如下:
鼠标键盘事件



