一、鼠标事件
在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。
ActionChains 类提供了鼠标操作的常用方法。
ActionChains 类的成员源码如下图所示:
下面我们通过一张表对上图中对外使用的成员进行分类(即带下划线的成员不放入下表):
实例代码如下:
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