selenium提供了比较完整的键盘操作,在使用的模拟键盘操作之前需要导入
from selenium.webdriver.common.keys import Keys
在keys类中,定义了非常多的按键操作,以下内容是在实际上会常用到的
组合键:
我们经常会用到的Ctrl+A,Ctrl+C都是组合键
在使用按键操作的时候需要借助一下send_keys()来模拟操作
Keys.CONTROL,也就是我们键盘上的Ctrl键,下面是几个常用的组合键:driver.find_element_by_id('xxx').send_keys(Keys.CONTROL,'a')
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)
注意:send_keys 有两个参数
常用的非组合键:driver.find_element_by_id('xxx').send_keys(Keys.ENTER)
回车键:Keys.ENTER
删除键:Keys.BACK_SPACE
空格键:Keys.SPACE
制表键:Keys.TAB
回退键:Keys.ESCAPE
刷新键:Keys.F5
例如在百度中利用Keys.ENTER代替搜索:
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('python')
time.sleep(3)
# 1.实例化ActionChains类
ac = ActionChains(driver)
# 2.调用鼠标行为,最后调用perform()来执行鼠标操作
ele = driver.find_element_by_xpath('//div[@id="u"]//a[@name="tj_settingicon"]')
ac.move_to_element(ele).perform()
WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//a[text()="高级搜索"]')))
driver.find_element_by_xpath('//a[text()="高级搜索"]').click()
WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//input[@value="高级搜索"]')))
driver.find_element_by_id('adv_keyword').clear()
driver.find_element_by_id('adv_keyword').send_keys('selenium')
# 使用Enter键代替高级搜索
driver.find_element_by_xpath('//input[@value="高级搜索"]').send_keys(Keys.ENTER)
driver.quit()