鼠标,键盘事件
1.鼠标
1. 1ActionChains
ActionChains是一种低级别的自动化交互方法,例如鼠标移动,鼠标按钮操作,按键操作和上下文菜单交互。这对于执行更复杂的操作非常有用,例如悬停和拖放。
ActionChains可以用于链式:
menu = driver.find_element_by_css_selector(“.nav”)
hidden_submenu = driver.find_element_by_css_selector(“.nav#submenu1”)
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
或者操作可以逐个排队,然后执行:
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
1.2基本用法
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains # 引入 ActionChains 类
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 定位到要右击的元素
right_click = driver.find_element_by_id("xxxx")
# 对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right_click).perform()#链式写法
# 分步写法
actions = ActionChains(driver)#调用 ActionChains()类,将浏览器驱动driver作为参数传入。
actions.click()# 装载单击动作
actions.context_click()# 装载右击动作,用于模拟鼠标右击操作,在调用时需要指定元素定位。
actions.perform()# 执行所有被装载的动作,可以理解为是对整个操作的提交动作。
1.3API汇总
- perform(self): ---执行链中的所有动作
- reset_actions(self): ---清除存储在远端的动作
- click(self, on_element=None): ---鼠标左键单击
- click_and_hold(self, on_element=None): --鼠标左键单击,不松开
- context_click(self, on_element=None): ---鼠标右键单击
- double_click(self, on_element=None): ---鼠标左键双击
- drag_and_drop(self, source, target): ---拖拽到某个元素后松开,其中source:鼠标拖动的源元素,target:鼠标释放的目标元素。
- drag_and_drop_by_offset(self, source, xoffset, yoffset): ---拖拽到某个坐标后松开
- key_down(self, value, element=None): ---某个键盘键被按下
- key_up(self, value, element=None): ---松开某个键
- move_by_offset(self, xoffset, yoffset): ---鼠标移动到某个坐标
- move_to_element(self, to_element): ---鼠标移动到某个元素
- move_to_element_with_offset(self, to_element, xoffset, yoffset): ---移动到距某个元素(左上角)多少的位置
- release(self, on_element=None): ---在某元素上松开鼠标
- send_keys(self, *keys_to_send): ---发送某些值到当前焦点元素
- send_keys_to_element(self, element, *keys_to_send): ---发送某些值到指定元素
2.键盘
from selenium.webdriver.common.keys import Keys#引入包
2.1辅助键
-
key_down #某个键盘键被按下
-
key_up # 松开某个键
-
send_keys #发送某些值到当前焦点元素
-
send_keys_to_element #发送某些值到指定元素
2.2keys
#输入框输入内容
driver.find_element_by_id("kw").send_keys("sanmu1")
#删除多输入的一个1
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
#输入空格键+“szj”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys(u"szj")
#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
#ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
#ctrl+v 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')
#通过回车键盘来代替点击操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)
#回退键 ESC
driver.find_element_by_id("su").send_keys(Keys.ESCAPE)
#制表键(Tab)
driver.find_element_by_id("su").send_keys(Keys.TAB)
#键盘 F1
driver.find_element_by_id("su").send_keys(Keys.F1)