参考资料:https://blog.csdn.net/zh175578809/article/details/76767748
参考资料2:https://blog.csdn.net/qq_41817302/article/details/79618654
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‘
看到模块中包含了很多的按键但是真正实际使用的按键不多,所以我下面对按键的操作将一些方法介绍一下,就不会对所有的按键详细介绍。
1.首先我们了解下组合键,什么是组合键,比如我们经常使用的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)
我们下面使用Ctrl + A 来编写一个实例,看一下组合键的使用。
#-*- coding:utf-8 -*-
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_id(‘kw‘).send_keys(‘AAAAAAAAAAAA‘)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,‘a‘) #注意这里组合键的输入。
time.sleep(10)
driver.quit()
2.下面常用的键,这些常用键主要是非组合键,直接输入即可。
下面我们选择一个常用的键,来编写一个例子,使用回车键来代替鼠标的click()键
#-*- coding:utf-8 -*-
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://cn.bing.com/")
driver.find_element_by_id(‘sb_form_q‘).send_keys(‘selenium‘)
driver.find_element_by_id("sb_form_go").send_keys(Keys.ENTER) #通过回车键来代替鼠标的左键
driver.quit()
二、鼠标的操作
前面的例子中,点击事件都是通过click()方法实现鼠标的点击事件。其实在WebDriver中,提供了许多鼠标操作的方法,这些操作方法都封装在ActionChains类中,包括鼠标右击、双击、悬停和鼠标拖动等功能。
ActionChains类提供的鼠标操作事件
context_click():点击鼠标右键
double_click():双击鼠标
drag_and_drop():拖动鼠标
move_to_element():鼠标悬停
鼠标悬停
页面上有些下拉菜单,在鼠标放到元素上以后,下面的菜单才会显示出来。下面的图片就是一个例子
百度首页上的设置项,下面的菜单默认不会显示,将鼠标停在上面后才会显示,这就是鼠标的悬停操作,菜单显示以后就可以对下面的项进行点击操作
进入搜索设置的代码
# -*- coding: utf-8 -*-
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(3)
settings = driver.find_element_by_link_text(‘设置‘)
webdriver.ActionChains(driver).move_to_element(settings).perform()
time.sleep(1)
settings_search = driver.find_element_by_class_name(‘setpref‘)
settings_search.click()
time.sleep(3)
driver.close()
打开页面后,根据链接的文本信息找到设置项,使用ActionChains的move_to_element()方法将鼠标悬停在设置上,然后找到搜索设置项
鼠标的右击、双击和拖动事件都是通过上述的方法调用,只要将方法替换一下就可以了。拖动事件需要传入两个参数,第一个参数是拖动的起点元素,第二个参数是终点元素
webdriver.ActionChains(driver).context_click("右击的元素定位").perform() #右击事件
webdriver.ActionChains(driver).double_click("双击的元素定位").perform() #双击事件
webdriver.ActionChains(driver).drag_and_drop("拖动的起点元素", "拖动的终点元素").perform() #拖动事件
(转)python selenium-webdriver 元素操作之鼠标和键盘事件
原文:https://www.cnblogs.com/chun-xiaolin001/p/10201211.html