selenium(5)鼠标,键盘事件
鼠标的操作
click() 左击
context_click() 右击
double_click() 双击
move_to_element() 移动鼠标到元素中间(悬停)
click_and_hold() 在元素上按下鼠标左键
release() 释放鼠标
perform() 执行ActionChains中存储的动作
在Selenium中,要执行一些复杂的鼠标和键盘操作,如右击、双击、悬停(hover)以及拖拽等,通常需要使用ActionChains
对象。
这是因为这些操作往往不是单一的、简单的动作,而是一系列的动作组合。ActionChains
提供了一种方式来将这些动作串联起来,并按照特定的顺序执行。
拿右击举例子:
首先创建了一个ActionChains
对象,并使用context_click
方法将右击操作添加到动作链中。然后,通过调用perform
方法来执行动作链中的所有动作。
例子:
import time
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
class perfform():
driver=webdriver.Chrome()
def mouse(self,url,icon_path,hover_xpath,click_xpath):
self.driver.get(url)
self.driver.maximize_window()
time.sleep(2)
right_click=self.driver.find_element(By.XPATH,icon_path)# 定位要右击的元素
Aciton=ActionChains(self.driver) # 创建ActionChains对象
Aciton.context_click(right_click).perform() # 执行右击操作 context_click() 右击
time.sleep(1)
hover=self.driver.find_element(By.XPATH,hover_xpath)
Aciton.move_to_element(hover).perform()#执行鼠标悬停操作 move_to_element() 移动鼠标到元素中间(悬停)
time.sleep(3)
self.driver.find_element(By.XPATH,click_xpath).click() #click() 左击
time.sleep(5)
world=perfform()
url='http://www.huangjinjiage.cn/guoneijinjia.html'
icon_path='//*[@id="box2"]/div[2]/img'
hover_xpath='//*[@id="box2"]/div[2]/img'
click_xpath='/html/body/div[3]/div[2]/div[4]/div[2]/a[1]'
world.mouse(url,icon_path,hover_xpath,click_xpath)