一、鼠标事件
在 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