Web自动化测试进阶 —— Selenium模拟鼠标操作

鼠标操作事件

在实际的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()

# 备注:系统级别的组合键不能使用,因为这里的组合键都是只针对网页生效的

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

资料获取方式 :

相关推荐
半导体守望者3 小时前
英福康INFICON VGC501, VGC502, VGC503 单通道、双通道和三通道测量装置
经验分享·笔记·功能测试·自动化·制造
互联网杂货铺11 小时前
unittest自动化测试实战
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
Python大数据分析@12 小时前
py爬虫的话,selenium是不是能完全取代requests?
爬虫·selenium·测试工具
Tom Boom1 天前
40. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(类写法)
运维·自动化测试·python·selenium·自动化·自动化测试框架·异步编程
慧都小项1 天前
微服务测试困境?Parasoft SOAtest的自动化、虚拟化与智能分析来袭!
自动化测试·parasoft·智能修复·服务虚拟化·ota升级·微服务测试
CtrlCV 攻城狮1 天前
Selenium的底层原理
selenium·测试工具
Feng.Lee2 天前
聊一聊接口测试中缓存处理策略
功能测试·测试工具·缓存
齐鲁物联网测试中心王工3 天前
权威认证与质量保障:第三方检测在科技成果鉴定测试中的核心作用
功能测试·性能测试·cma·第三方检测·软件检测·cnas·政策申报
HAPPY酷3 天前
selenium基础
selenium·测试工具
逾非时3 天前
python:selenium爬取网站信息
开发语言·python·selenium