一, 鼠标事件
在 webDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供.
ActionChains 类提供了鼠标操作的常用方法.
ActionChains 类的成员源码如下图所示:
下面我们通过一张表对上图中对外使用的成员进行分类 (即带下划线的成员不放入下表):
分类 | 函数名 | 描述 |
---|---|---|
鼠标操作 | def click(self, on_element=None) | 鼠标左键单击 |
鼠标操作 | def click_and_hold(self, on_element=None) | 鼠标左键按键,不释放 |
鼠标操作 | def context_click(self, on_element=None) | 鼠标右击 |
鼠标操作 | def double_click(self, on_element=None) | 鼠标左键双击 |
鼠标操作 | def drag_and_drop(self, source, target) | 鼠标拖曳动作, 将指定元素位置拖曳到目标元素位置,来移动元素 |
鼠标操作 | def drag_and_drop_by_offset(self, source, xoffset, yoffset) | 鼠标拖曳动作,将指定元素按沿 x、y 方向拖曳指定距离来移动元素 |
鼠标操作 | def move_by_offset(self, xoffset, yoffset) | 将鼠标光标沿 x、y 方向移动指定距离,来实现鼠标的移动 |
鼠标操作 | def move_to_element(self, to_element) | 将鼠标光标移动到指定的元素上 |
鼠标操作 | def move_to_element_with_offset(self, to_element, xoffset, yoffset) | 将鼠标光标移动到指定的元素相对元素左上角位置偏移(xoffset、yoffset)的位置 |
鼠标操作 | def release(self, on_element=None) | 释放鼠标, 与 click_and_hold 函数配对使用 |
键盘操作 | def key_down(self, value, element=None) | 按下指定的键盘按键 |
键盘操作 | def key_up(self, value, element=None) | 释放已按下的键盘按键(与 key_down 配套使用) |
键盘操作 | def send_keys(self, *keys_to_send) | 键盘输入 |
键盘操作 | def send_keys_to_element(self, element, *keys_to_send) | 给指定元素(可输入元素)进行键盘输入 |
其他 | def perform(self) | 执行所有存储的动作 |
其他 | def reset_actions(self) | 清空所有存储的动作 |
其他 | def pause(self, seconds) | 在指定的时间内暂定所有的输入 |
实例代码如下:
- from selenium.webdriver import Chrome
- from selenium.webdriver import ActionChains
- import time
- driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
- driver.get('https://www.baidu.com')
- '''
- 搜索点击查询博客园
- driver.find_element_by_id("kw").send_keys("博客园")
- driver.find_element_by_id("su").click()
- '''# 鼠标悬移至" 更多产品 "above = driver.find_element_by_class_name("bri")
- ActionChains(driver).move_to_element(above).perform()
- time.sleep(5)
- driver.quit()
二, 键盘事件
Keys() 类提供了键盘上几乎所有按键的方法. 前面了解到, send_keys() 方法可以用来模拟键盘输入,
除此 之外, 我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A, Ctrl+C 等.
selenium 提供了比较完整的键盘操作, 在使用的模拟键盘操作之前需要我们导入
from selenium.webdriver.common.keys import Keys 即可, 然后就可以来模拟键盘操作.
- # 导入 Keys 模块, 然后我们看看 Keys 模块定义了那些按键
- from selenium.webdriver.common.keys import Keys
导入模块以后, 我们可以看看具体的定义按键内容, 我已经把经常使用的按键注释标记.
- NULL = '\ue000'
- CANCEL = '\ue001' # ^break
- HELP = '\ue002'
- BACKSPACE = '\ue003'
- BACK_SPACE = BACKSPACE #删除键
- TAB = '\ue004' #TAB 键
- CLEAR = '\ue005'
- RETURN = '\ue006'
- ENTER = '\ue007' #回车键
- SHIFT = '\ue008' #Shift 键
- LEFT_SHIFT = SHIFT
- CONTROL = '\ue009'
- LEFT_CONTROL = CONTROL #Ctrl 键
- ALT = '\ue00a' #Alt 键
- LEFT_ALT = ALT
- PAUSE = '\ue00b'
- ESCAPE = '\ue00c' #ECS 键
- SPACE = '\ue00d' #空格键
- PAGE_UP = '\ue00e' #PgUp 键
- PAGE_DOWN = '\ue00f' #PgDwon 键
- END = '\ue010' #END 键
- HOME = '\ue011' #HOME 键
- LEFT = '\ue012' #左键
- ARROW_LEFT = LEFT
- UP = '\ue013' #上键
- ARROW_UP = UP
- RIGHT = '\ue014'
- ARROW_RIGHT = RIGHT #右键
- DOWN = '\ue015' #下键
- ARROW_DOWN = DOWN
- INSERT = '\ue016' #insert 键
- DELETE = '\ue017' #del 键
- SEMICOLON = '\ue018' #';'键
- EQUALS = '\ue019' #'='键
- #数字键盘
- NUMPAD0 = '\ue01a' # number pad keys
- NUMPAD1 = '\ue01b'
- NUMPAD2 = '\ue01c'
- NUMPAD3 = '\ue01d'
- NUMPAD4 = '\ue01e'
- NUMPAD5 = '\ue01f'
- NUMPAD6 = '\ue020'
- NUMPAD7 = '\ue021'
- NUMPAD8 = '\ue022'
- NUMPAD9 = '\ue023'
- MULTIPLY = '\ue024' # '*' 键
- ADD = '\ue025' # '+' 键
- SEPARATOR = '\ue026' #','键
- SUBTRACT = '\ue027' # '-' 键
- DECIMAL = '\ue028' # '.'键
- DIVIDE = '\ue029' #'/'键
- F1 = '\ue031' # function keys
- F2 = '\ue032'
- F3 = '\ue033'
- F4 = '\ue034'
- F5 = '\ue035'
- F6 = '\ue036'
- F7 = '\ue037'
- F8 = '\ue038'
- F9 = '\ue039'
- F10 = '\ue03a'
- F11 = '\ue03b'
- F12 = '\ue03c'
- META = '\ue03d'
- COMMAND = '\ue03d'
组合键, 比如我们经常使用的 Ctrl + A ,Ctrl + C 等都是组合键. 我们先看个例子
在使用按键操作的时候我们需要借助一下 send_keys() 来模拟操作, Keys.CONTROL 也就是我们键盘上的 Ctrl 键, 下面是几个常用的组合键.
- 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)
下面我们来练个手, 看看键盘操作和组合键如何使用吧
- from selenium.webdriver import Chrome
- from selenium.webdriver.common.keys import Keys
- import time
- driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
- driver.get('https://www.baidu.com')
- # 搜索点击查询博客园, 多输入一个园字
- driver.find_element_by_id("kw").send_keys("博客园园")
- time.sleep(2)
- #backspace 回格键, 删除多输入一个的 园
- driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
- time.sleep(2)
- # 输入空格键, 重新输入 python
- driver.find_element_by_id("kw").send_keys(Keys.SPACE)
- driver.find_element_by_id("kw").send_keys("Python")
- #ctrl+a 全选输入框的内容
- driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
- time.sleep(2)
- #ctrl+x 剪切输入框的内容
- driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
- time.sleep(2)
- #ctrl+v 粘贴内容到输入框
- driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')
- time.sleep(2)
- # 通过回车键来代替单击操作
- driver.find_element_by_id("su").send_keys(Keys.ENTER)
- time.sleep(5)
- driver.quit()
除了上面介绍的键盘操作和组合键以外, 还有一些其他常用的非组合键键盘操作, 其实我们上面实例中已经介绍过一些了.
回车键 Keys.ENTER
删除键 Keys.BACK_SPACE
空格键 Keys.SPACE
制表键 Keys.TAB
回退键 Keys.ESCAPE
刷新键 Keys.F5
来源: https://www.cnblogs.com/wuweiblogs/p/10601616.html