梳理selenium的鼠标方法
梳理selenium的鼠标方法
你需要有一定的selenium基础
基本用法
包导入
from selenium.webdriver import ActionChains
调用方式一:链式调用
ActionChains(driver).动作1.动作2.perform()
调用方式二:分步执行
myaction = ActionChains(driver)
myaction.动作1
myaction.动作2
myaction.perform()
所有鼠标方法
| 鼠标方法 | 参数 | 说明 |
|---|---|---|
| click★★ | on_element=None | 点击 |
| click_and_hold★ | on_element=None | 点击并按住 |
| context_click★ | on_element=None | 右键 |
| double_click★ | on_element=None | 双击 |
| drag_and_drop★★ | source, target | 拖拽 |
| drag_and_drop_by_offset★ | source, xoffset, yoffset | 拖拽(依据偏移量) |
| key_down★ | value, element=None | 按下某个键 |
| key_up★ | value, element=None | 抬起某个键 |
| move_by_offset★ | xoffset, yoffset | 移动(依据偏移量) |
| move_to_element★★ | to_element | 移动到元素 |
| move_to_element_with_offset | to_element, xoffset, yoffset | 移动到元素(依据偏移量) |
| pause | seconds | 暂停 |
| perform★★★ | 无参数 | 执行 |
| release★ | on_element=None | 释放 |
| reset_actions | 无参数 | 重置动作 |
| scroll | x: int, y: int, delta_x: int, delta_y: int, duration: int = 0, origin: str = "viewport" | 滚动(废弃) |
| scroll_by_amount | delta_x: int, delta_y: int | 通过给定的偏差滚动 |
| scroll_from_origin | scroll_origin: ScrollOrigin, delta_x: int, delta_y: int | 通过给定的原始位置+偏差滚动 |
| scroll_to_element | element | 滚动到元素 |
| send_keys★ | *keys_to_send | 发送按键 |
| send_keys_to_element★ | element, *keys_to_send | 发送按键到元素 |
实例部分
实例:click、context_click、double_click
体验3个方法的作用
from selenium.webdriver import ActionChains
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/clicks.htm')
ele_click = driver.find_element('css selector', "input[value='click me']")
ele_dblclick = driver.find_element('css selector', "input[value='dbl click me']")
ele_rightclick = driver.find_element('css selector', "input[value='right click me']")
ActionChains(driver).click(ele_click).perform()
ActionChains(driver).double_click(ele_dblclick).perform()
ActionChains(driver).context_click(ele_rightclick).perform()
双击全选的一个案例
from selenium.webdriver import ActionChains
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://106.14.1.150:8090/forum.php')
ele_username = driver.find_element('css selector', "#ls_username")
ele_username.send_keys('admin')
ActionChains(driver).double_click(ele_username).perform()
实例:drag_and_drop和底层实现click_and_hold和release
from time import sleep
from selenium.webdriver import ActionChains
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/dragDropMooTools.htm')
ele_drag = driver.find_element('css selector', '#dragger')
ele_items = driver.find_elements('css selector', '.item')
for ele_item in ele_items:
ActionChains(driver).drag_and_drop(ele_drag, ele_item).perform()
sleep(1)
底层实现
from time import sleep
from selenium.webdriver import ActionChains
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/dragDropMooTools.htm')
ele_drag = driver.find_element('css selector', '#dragger')
ele_items = driver.find_elements('css selector', '.item')
for ele_item in ele_items:
myaction = ActionChains(driver)
myaction.click_and_hold(ele_drag) # 点击并按住
myaction.release(ele_item) # 松开按键
myaction.perform()
sleep(1)
实例:move_to_element实现悬停
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep
driver = webdriver.Chrome()
driver.get('http://106.14.1.150:8090/forum.php')
# 1. 鼠标移动到快捷导航元素
ele_navi = driver.find_element('css selector','#qmenu')
ActionChains(driver).move_to_element(ele_navi).perform()
实例:move_by_offset实现坐标点击
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.get('http://106.14.1.150:8090/forum.php')
ele_username = driver.find_element('css selector','#ls_username')
x= ele_username.location['x']
y= ele_username.location['y']
ActionChains(driver).move_by_offset(xoffset=x,yoffset=y).click().perform()
实例:drag_and_drop_by_offset实现滚动条拖动
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.maximize_window()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
}) #让浏览器感知不到是自动化软件在动作
driver.get('http://vip.ytesting.com/loginController.do?login')
driver.find_element('css selector','#userName').send_keys('松勤VIP账号')
driver.find_element('css selector','#password').send_keys('松勤VIP账号的密码')
ele_huakuai = driver.find_element('css selector','#nc_1_n1z')
ele_gundongtiao = driver.find_element('css selector','#nc_1__scale_text')
distance = ele_gundongtiao.rect['width'] - ele_huakuai.rect['width']
ActionChains(driver).drag_and_drop_by_offset(ele_huakuai,xoffset=distance,yoffset=0).perform()
sleep(2)
driver.find_element('css selector','#but_login').click()
实例:send_keys、send_keys_to_element、key_down和key_up
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.get('http://106.14.1.150:8090/forum.php')
ele_username = driver.find_element('id','ls_username')
ActionChains(driver).send_keys_to_element(ele_username,'ad').perform()
ActionChains(driver).click(ele_username).send_keys('mi').perform()
ActionChains(driver).click(ele_username).key_down('n').key_up('n').perform()
梳理selenium的鼠标方法的更多相关文章
- Java&Selenium 模拟鼠标方法封装
Java&Selenium 模拟鼠标方法封装 package util; import org.openqa.selenium.By; import org.openqa.selenium.W ...
- selenium + python(鼠标操作)
关于最近学习selenium自动化测试鼠标操作的一些总结 常见的鼠标操作
- Java&Selenium智能等待方法封装
Java&Selenium智能等待方法封装 ExpectedConditions方法还有很多,自然也可以继续扩展很多 package util; import org.openqa.selen ...
- Java&Selenium 模拟键盘方法封装
Java&Selenium 模拟键盘方法封装 package util; import java.awt.AWTException; import java.awt.Robot; import ...
- Java&Selenium控制滚动条方法封装
Java&Selenium控制滚动条方法封装 package util; import org.openqa.selenium.JavascriptExecutor; import org.o ...
- selenium的定位方法-单元素定位
selenium自动化测试中,提供了单个元素定位方法,多个元素定位方法,2种方式都是根据元素属性:ID.NAME.CLASS_NAME.TAG_NAME.CSS_SELECTOR.XPATH.LINK ...
- selenium+python 移动鼠标方法
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver=we ...
- python selenium常用基本方法---H5和键盘鼠标操作
一.模拟手机打开页面(H5测试) from selenium import webdriver mobile_emulation = {'deviceName':'iPhone X'} options ...
- Python+Selenium学习--鼠标事件
场景 前景讲解了鼠标的click()事件,而我们在实际的web产品测试中,有关鼠标的操作,不仅仅只有单击,有时候还包括右击,双击,拖动等操作,这些操作包含在ActionChains类中. Action ...
- selenium模拟鼠标操作
Selenium提供了一个类ActionChains来处理模拟鼠标事件,如单击.双击.拖动等. 基本语法: class ActionChains(object): """ ...
随机推荐
- 实现将机器A上的程序包复制到机器B并更新的脚本
一.前言 之前有写过如何在单台服务器上执行脚本自动更新程序包,但平时测试过程中相信大部分公司都是需要测试人员在服务器A上进行功能测试,测试通过后再将程序包更新到服务器B上进行安全测试或者性能测试:今天 ...
- MQTT GUI 客户端 可视化管理工具推荐
一款好用的 MQTT 客户端工具可以极大地提高开发者使用MQTT的效率.MQTT 客户端工具常用于建立与 MQTT 服务器的连接,进行主题订阅.消息收发等操作. 今天,在此推荐一款优秀的MQTT GU ...
- React Server Component: 混合式渲染
作者:谢奇璇 React 官方对 Server Comopnent 是这样介绍的: zero-bundle-size React Server Components. 这是一种实验性探索,但相信该探索 ...
- 【Java SE】Day10接口、多态
一.接口 1.概述 是一种引用类型,是方法的集合,内部封装了各种方法 引用类型:数组.类.接口.包装类 2.方法的定义格式 抽象方法:无方法体,子类实现 默认方法: 静态方法:static修饰,可以由 ...
- 【大数据面试】Flink 01 概述:包含内容、层次架构、运行组件、部署模式、任务提交流程、任务调度概念、编程模型组成
一.概述 1.介绍 对无界和有界数据流进行有状态计算的分布式引擎和框架,并可以使用高层API编写分布式任务,主要包括: DataSet API(批处理):静态数据抽象为分布式数据集,方便使用操作符进行 ...
- base64解析爬取糗百
一.缘由 这是我之前刚开始学习的时候爬取糗百的练习内容,主要练习的是bs64解析.虽然现在用的不是特别的多,但是当初的时候用起来还是非常的顺手的. 二.代码实现 #coding:utf-8 impor ...
- ORM数据库查询优化only与defer(select_related与prefetch_related)
目录 一:数据库查询优化 1.ORM语句特点 2.only 3.defer 4.only与defer区别 5.select_related与prefetch_related 6.select_rela ...
- EXACT函数
EXACT函数:EXACT函数是一个文本函数,通过这个函数可以将不同的字符串进行对比,通常用于信息核对. EXACT函数的功能:比较两个字符串是否一致,返回不同的结果. EXACT函数的语法结构:EX ...
- 数据结构 传统链表实现与Linux内核链表
头文件: #pragma once #include<stdlib.h> //链表结点 struct LinkNode{ void *data; struct LinkNode *next ...
- DFS深度优先搜索例题分析
洛谷P1596 Lake Counting S 题面翻译 由于近期的降雨,雨水汇集在农民约翰的田地不同的地方.我们用一个 \(N\times M(1\times N\times 100, 1\leq ...