前面的演示程序我们都使用的是鼠标操作,比如点击链接时,我们使用的是click()方法,可以模拟鼠标点击,那么在Python Selenium中怎么操作键盘呢?比如回车,CTRL+TAB这类键盘事件呢?这篇就是聊下怎么操作keys。
特殊按键和快捷键
键盘上有些特殊按键,比如CTRL键,SHIFT键;还有一些操作浏览器的快捷键,典型的就是使用CTRL+组合键。
这些键的使用都在selenium.webdriver.common.keys里
要操作按键的时候要imprt一下。下面程序就来演示一下,还是老规矩程序在py3.6测试通过:
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
#打开Chrome浏览器
driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")
#浏览器最大化
driver.maximize_window()
#打开猿人学首页
driver.get('https://www.yuanrenxue.com')
#定位页面右上角的搜索图标并点击
try:
element = WebDriverWait(driver,10).until(
EC.presence_of_element_located((By.CLASS_NAME, "search-show"))
)
element.click()
except Exception:
print('not locate search-show')
driver.quit()
else:
search = driver.find_element_by_class_name('search-input')
search.send_keys(u'python教程')
time.sleep(5)
search.send_keys(Keys.RETURN)
time.sleep(5)
element = driver.find_element_by_tag_name('body')
element.send_keys(Keys.DOWN)
element.send_keys(Keys.DOWN)
time.sleep(5)
driver.quit()
还是拿猿人学网站举例,这是之前那篇selenium演示程序的代码,我们把wait改成显示等待了。有些地方加了sleep的原因是让操作步骤看得更清楚。
程序功能是点击网站右上角的搜索图标,在搜索框里输入Python教程并且按回车键。然后键盘点击向下按键两次。
输入按键是使用send_keys()方法。
回车键是Keys.RETURN,K是大写。我们在文件头已经import Keys。
其他的特殊按键还有:
Keys.TAB
tab键
Keys.SHIFT
shift键
Keys.CONTROL
CTRL键
Keys.ALT
Keys.SPACE
Keys.PAGE_UP
Keys.PAGE_DOWN
Keys.UP
Keys.DOWN
Keys.LEFT
Keys.RIGHT
Keys.F1
Keys.F5
Keys.F12
Keys.COMMAND
见名知意,挺简单的,上面只列举一部分按钮的写法,要看全部的请看你selenium安装路径的里的
C:\Python37\Lib\site-packages\selenium\webdriver\common
keys.py文件。这个路径是我的安装路径。
PS:看上面的向下按键是作用在body元素上的,动作要作用在正确的元素上,不然程序会报错,比如把向下按键作用在上面程序的input框上就会报错,因为input框又没法向下移动。比如向下,向上,CTRL+组合按键等等一般都作用在body元素上。
组合键的使用
上面举例了怎么操作键盘,只举例了单个按键的使用,还有经常使用CTRL+组合键的情况。再看演示程序,一看就明白。
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
#打开Chrome浏览器
driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")
#浏览器最大化
driver.maximize_window()
#打开猿人学首页
driver.get('https://www.yuanrenxue.com')
time.sleep(5)
element = driver.find_element_by_tag_name('body')
element.send_keys(Keys.CONTROL,'a')
element.send_keys(Keys.CONTROL,Keys.F4)
上面是打开猿人学网站后使用ctrl+a全选,然后ctrl+f4关闭当前tab。
键入字符串
还有在输入框中输入字符串的情况,其实之前和上面的例子已经有了,还是使用send_keys()方法,参数传入字符串就好了,另外记住一点就是字符串要是unicode码的。
我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。
***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.com 原创,没有猿人学授权,请勿以任何形式转载。***