对于模拟键盘事件 ,比如基础操作send_keys()方法输入任意值、鼠标事件key_down()、key_up()等,我们也可通过引入的common.keys
库来模拟键盘来操控浏览器
具体用法其实和我们之前对浏览器输入框所用的方法:send_keys()是一样的,只不过我们通过keys类,可以输入webdriver包中对应的键盘操作。
首先我们要导入keys库
from selenium.webdriver.common.keys import Keys
输入单个键盘按键:
小键盘按键3:send_keys(Keys.NUMPAD3)
输入多次的同一个按键
按10次小键盘按键3:send_keys(Keys.NUMPAD3*10)
输入组合按键:
全选Ctrl+A: send_keys(Keys.CONTROL, "a")
我们通过keys类中,找到了键盘按键所对应的值:
? ? NULL = ‘\ue000‘
? ? ? ? CANCEL = ‘\ue001‘? # ^break
????? ? HELP = ‘\ue002‘
????? ? BACKSPACE = ‘\ue003‘
????? ? BACK_SPACE = BACKSPACE
????? ? TAB = ‘\ue004‘
????? ? CLEAR = ‘\ue005‘
????? ? RETURN = ‘\ue006‘
????? ? ENTER = ‘\ue007‘
????? ? SHIFT = ‘\ue008‘
????? ? LEFT_SHIFT = SHIFT
????? ? CONTROL = ‘\ue009‘
????? ? LEFT_CONTROL = CONTROL
????? ? ALT = ‘\ue00a‘
????? ? LEFT_ALT = ALT
????? ? PAUSE = ‘\ue00b‘
????? ? ESCAPE = ‘\ue00c‘
????? ? SPACE = ‘\ue00d‘
????? ? PAGE_UP = ‘\ue00e‘
????? ? PAGE_DOWN = ‘\ue00f‘
????? ? END = ‘\ue010‘
????? ? HOME = ‘\ue011‘
????? ? LEFT = ‘\ue012‘
????? ? ARROW_LEFT = LEFT
????? ? UP = ‘\ue013‘
????? ? ARROW_UP = UP
????? ? RIGHT = ‘\ue014‘
????? ? ARROW_RIGHT = RIGHT
????? ? DOWN = ‘\ue015‘
????? ? ARROW_DOWN = DOWN
????? ? INSERT = ‘\ue016‘
????? ? DELETE = ‘\ue017‘
????? ? 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 + C 、Ctrl + V复制到用户名输入框。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
# 模拟键盘操作-百度登录页面
driver = webdriver.Chrome()
driver.get("https://passport.baidu.com/v2/?reg")
# 用户名元素定位和手机号元素定位
name_element=driver.find_element_by_css_selector("#TANGRAM__PSP_3__userName")
phone_element=driver.find_element_by_css_selector("#TANGRAM__PSP_3__phone")
# 在名字输入框输入10个数字键3
name_element.send_keys(Keys.NUMPAD3*10)
# 在手机号输入框输入手机号码
phone_element.send_keys("18812345678")
# 在手机号输入框进行组合键Ctrl+a 、 Ctrl+x
phone_element.send_keys(Keys.CONTROL, "a")
sleep(1)
phone_element.send_keys(Keys.CONTROL, "x")
# 在名字输入框输入组合键Ctrl+v
name_element.clear()
name_element.send_keys(Keys.CONTROL, "v")
2、实现腾讯课堂 -?QQ用户名密码登陆的自动化脚本
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
driver=webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://ke.qq.com/")
driver.find_element_by_xpath("//a[@id=‘js_login‘]").click()
driver.find_element_by_xpath("//a[text()=‘QQ登录‘]").click()
#切换iframe
iframe_ele=driver.find_element_by_xpath("//iframe[@name=‘login_frame_qq‘]")
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it(iframe_ele))
#选择账号密码登录
ele=driver.find_element_by_xpath("//a[@id=‘switcher_plogin‘]")
ActionChains(driver).click(ele).perform()
#输入账号密码
in_ele=driver.find_element_by_xpath("//div[@class=‘uinArea‘]/descendant::input")
in_ele.send_keys("6******")
pw_ele=driver.find_element_by_xpath("//div[@class=‘pwdArea‘]/descendant::input")
pw_ele.send_keys("****")
#提交:1、输入回车键;2、点击登录按钮;3、submit(要在form表单内)
pw_ele.send_keys(Keys.ENTER)
原文:https://www.cnblogs.com/testeremma/p/12684540.html