python+selenium(6)--鼠标和键盘事件
1、鼠标操作事件
很多时候我们在操作浏览器的过程中会遇到要做一些鼠标和键盘事件,例如:鼠标悬浮打开窗口、鼠标双击、鼠标右键单击、键盘回车键、组合键等操作
鼠标的操作方式都包含在ActionChains类提供的鼠标操作事件中,代码如下:
#将鼠标悬停在某个标签上
webdriver.ActionChains(driver).move_to_element("鼠标悬停在某个标签上").perform()
#双击方法
webdriver.ActionChains(driver).double_click("需要双击的元素").perform()
#点击鼠标右键
webdriver.ActionChains(driver).context_click("需要点击鼠标右键的元素").perform()
#拖动鼠标
webdriver.ActionChains(driver).drag_and_drop("需要拖动鼠标的元素").perform()
例如,在百度搜索界面需要将鼠标悬停在“设置”栏位上才能展开有关“设置”选项的详细内容,如下图:
进入“设置”并点击“高级搜索”的操作代码如下:
#codibg:utf-8
from selenium import webdriver
import time#调用火狐浏览器驱动
driver = webdriver.Firefox()
#进入百度搜索页面
driver.get("https://www.baidu.com")
#添加等待时间,当前等待时间为3s
time.sleep(3)
#找到页面中为“设置”的text
settings = driver.find_element_by_link_text("设置")
#将鼠标悬停在“设置”按钮上,使设置界面展开
webdriver.ActionChains(driver).move_to_element(settings).perform()
time.sleep(1)
#点击“搜索设置”按钮
driver.find_element_by_class_name("setpref").click()
#点击“保存设置”按钮
driver.find_element_by_class_name("prefpanelgo").click()
#获取alert对话框
alert = driver.switch_to_alert()
#添加等待时间
time.sleep(2)
#打印弹出框信息
print(alert.text)
#点击弹出框中确定按钮
alert.accept()
time.sleep(3)
#关闭当前页面
driver.close()
2、键盘事件
Keys类中提供了几乎所有的键盘事件,在鼠标事件中用到了两个键盘事件,键盘的向下按键(send_keys(Keys.DOWN))和键盘的回车事件(send_keys(Keys.ENTER))。键盘的事件需要导入Keys模块。
from selenium.webdriver.common.keys import Keys
所有的键盘事件都包含在这个模块中,send_keys用来模拟键盘输入,除此之外,还可以用例模拟键盘上的按键,不仅支持单个的键盘按键,还支持组合按键输入。
#codibg:utf-8
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
#调用火狐浏览器驱动
driver = webdriver.Firefox()
#启动浏览器并打开百度页面
driver.get("https://www.baidu.com")
#设置当前等待时间为3s
time.sleep(3)
driver.find_element_by_id("kw").send_keys("selenium")#在搜索框中搜索selenium
time.sleep(2)
driver.find_element_by_id('kw').send_keys(Keys.SPACE)#输入空格键
time.sleep(2)
driver.find_element_by_id("kw").send_keys('python')#在搜索框中输入python
time.sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')#输入Ctrl+a全选
time.sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c')#输入Ctrl+c复制
time.sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')#输入Ctrl+v粘贴
time.sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.ENTER)#输入回车键
#关闭当前页面
driver.close()
下面是一些常用的键盘事件:
– Keys.BACK_SPACE:回退键(BackSpace)
– Keys.TAB:制表键(Tab)
– Keys.ENTER:回车键(Enter)
– Keys.SHIFT:大小写转换键(Shift)
– Keys.CONTROL:Control键(Ctrl)
– Keys.ALT:ALT键(Alt)
– Keys.ESCAPE:返回键(Esc)
– Keys.SPACE:空格键(Space)
– Keys.PAGE_UP:翻页键上(Page Up)
– Keys.PAGE_DOWN:翻页键下(Page Down)
– Keys.END:行尾键(End)
– Keys.HOME:行首键(Home)
– Keys.LEFT:方向键左(Left)
– Keys.UP:方向键上(Up)
– Keys.RIGHT:方向键右(Right)
– Keys.DOWN:方向键下(Down)
– Keys.INSERT:插入键(Insert)
– DELETE:删除键(Delete)
– NUMPAD0 ~ NUMPAD9:数字键1-9
– F1 ~ F12:F1 - F12键
– (Keys.CONTROL, ‘a’):组合键Control+a,全选
– (Keys.CONTROL, ‘c’):组合键Control+c,复制
– (Keys.CONTROL, ‘x’):组合键Control+x,剪切
– (Keys.CONTROL, ‘v’):组合键Control+v,粘贴