Selenium(9):模拟鼠标键盘的操作事件
鼠标操作事件
在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击、双击、拖动等操作,这些操作包含在ActionChains类中。
ActionChains类中鼠标操作常用方法:
首先导入ActionChains类: from selenium.webdriver.common.action_chains import ActionChains
context_click():右击
double_click():双击
drag_and_drop():拖动
move_to_element():鼠标移动到一个元素上
click_and_hold():按下鼠标左键在一个元素上(长按)
常用的链条命令
pause():停留、click():点击、release():释放、perform():执行
ActionChains(driver).move_to_element(元素对象).pause(秒).click(元素对象).release(元素对象).perform()
代码如下:
import os from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains current_path = os.path.dirname(os.path.abspath(__file__)) # 当前路径 driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路径 driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等 driver.get('https://www.baidu.com/') # 打开网站 # 右击操作 context_click() element_obj = driver.find_element(By.XPATH,'//input[@id="su"]') # 右击百度一下 mouse_obj = ActionChains(driver) mouse_obj.context_click(element_obj).perform() # perform执行操作 # 点击操作 click() element_obj = driver.find_element(By.XPATH,'//a[text()="hao123"]') mouse_obj = ActionChains(driver) mouse_obj.click(element_obj).release(element_obj).perform() # 点击hao123 # 长按操作 click_and_hold() element_obj = driver.find_element(By.XPATH,'//a[text()="hao123"]') mouse_obj = ActionChains(driver) mouse_obj.click_and_hold(element_obj).pause(10).release(element_obj).perform() #长按 hao123 10秒后松开 # 鼠标移动到一个元素 move_to_element() e1 = driver.find_element(By.XPATH,'//a[@name="tj_briicon"]') e2 = driver.find_element(By.XPATH,'//a[@name="tj_zhidao"]') mouse_obj = ActionChains(driver) mouse_obj.move_to_element(e1).pause(3).click(e2).release(e2).perform() # 链条命令 移动到 更多 元素上停顿3秒,然后点击 知道 元素
键盘操作事件
在实际的web测试工作中,需要配合键盘按键来操作,webdriver的keys()类提供键盘上所有按键的操作,还可以模拟组合键Ctrl_a,Ctrl+c/v等。
前置条件:导入Keys类
from selenium.webdriver.common.keys import Keys
页面上的键盘操作(从搜索框中按两下tab键)
driver.find_element(By.XPATH,'//input[@id="kw"]').click()
ActionChains(driver).send_keys(Keys.TAB).pause(1).send_keys(Keys.TAB).perform()
组合键操作 ctrl+a、ctrl+c、ctrl+v
driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('python')
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
备注:
1、在使用修饰键的时候需要key_down()和key_up()方法
修饰键包含ctrl、alt、shift
2、类似alt+F4 ctrl+alt+delete不能使用,这里的组合键只针对网页生效的
代码如下:
import os from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys current_path = os.path.dirname(os.path.abspath(__file__)) # 当前路径 driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路径 driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等 driver.get('https://www.baidu.com/') # 打开网站 # 页面上的键盘操作 从搜索框中按两下tab键 driver.find_element(By.XPATH,'//input[@id="kw"]').click() ActionChains(driver).send_keys(Keys.TAB).pause(1).send_keys(Keys.TAB).perform() # 组合键操作 ctrl+a、ctrl+c、ctrl+v、shift+a # 修饰键 ctrl、alt、shift # ctrl+a ==> 按下ctrl、按下a、松开a、松开ctrl driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('python') ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform() # 备注:系统级别的组合键不能使用,因为这里的组合键都是只针对网页生效的
转:https://www.cnblogs.com/YouJeffrey/p/15603555.html
参考:https://blog.csdn.net/weixin_44623587/article/details/125994759
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律