《最新出炉》系列入门篇-Python+Playwright自动化测试-44-鼠标操作-上篇
1.简介
前边文章中已经讲解过鼠标的拖拽操作,今天宏哥在这里对其的其他操作进行一个详细地介绍和讲解,然后对其中的一些比较常见的、重要的操作单独拿出来进行详细的介绍和讲解。
2.鼠标操作语法
鼠标操作介绍官方API的文档地址:https://playwright.dev/docs/api/class-mouse
Mouse鼠标操作是基于page对象去调用。常用的鼠标操作有单击,双击,滚轮,按住,移动,释放。
2.1官方示例
1.使用` page.mouse` 画 一个100x100的正方形。语法如下:
# Using ‘page.mouse’ to trace a 100x100 square.
# 鼠标移动到(0,0)坐标
await page.mouse.move(0, 0);
# 按下鼠标
await page.mouse.down();
# 鼠标纵坐标向下移动100像素
await page.mouse.move(0, 100);
# 鼠标横坐标向右移动100像素
await page.mouse.move(100, 100);
# 鼠标纵坐标向上移动100像素
await page.mouse.move(100, 0);
# 鼠标纵坐标向左移动100像素
await page.mouse.move(0, 0);
# 释放鼠标
await page.mouse.up();
2.鼠标运行轨迹,如下图所示:

3.牛刀小试
我们就利用上边的官方例子打开在线画图:https://draw.yunser.com/,根据官网的示列画一个正方形给小伙伴或童鞋们进行演示一下。
3.1代码设计

3.2参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2023-12-12
@author: 北京-宏哥
公众号:北京宏哥
Project: 《最新出炉》系列入门篇-Python+Playwright自动化测试-44-鼠标操作-上篇
''' # 3.导入模块
from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) -> None: def mouse_operate():
# https://draw.yunser.com/
page.mouse.move(350, 200)
page.mouse.down()
page.mouse.move(350, 300)
page.mouse.move(450, 300)
page.mouse.move(450, 200)
page.mouse.move(350, 200)
page.mouse.up() browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("https://draw.yunser.com/")
page.wait_for_timeout(1000)
mouse_operate()
page.wait_for_timeout(1000)
# page.pause()
context.close()
browser.close() with sync_playwright() as playwright:
run(playwright)
3.3运行代码
1.运行代码,右键Run'Test',控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作。如下图所示:

4.click模拟鼠标点击
鼠标click 点击是mouse.move()、mouse.down()、mouse.up()的快捷方式。可以简单的理解为这三个操作的是一套组合拳。语法如下:
def click(
self,
x: float,
y: float,
*,
delay: typing.Optional[float] = None,
button: typing.Optional[Literal["left", "middle", "right"]] = None,
click_count: typing.Optional[int] = None
) -> None:
"""Mouse.click Shortcut for `mouse.move()`, `mouse.down()`, `mouse.up()`. Parameters
----------
x : float
y : float
delay : Union[float, None]
Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
button : Union["left", "middle", "right", None]
Defaults to `left`.
click_count : Union[int, None]
defaults to 1. See [UIEvent.detail].
"""
4.1参数详解
|
参数 |
类型 |
释义 |
|---|---|---|
|
x |
float |
x横向坐标 |
|
y |
float |
y纵向坐标 |
|
button |
list["left", "middle", "right"] |
左中右可选,是点击元素的位置:"left", "middle", "right", 默认参数是left |
|
click_count |
int |
点击次数,默认值为1,含义参考:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail |
|
delay |
float |
按下按键和松开按键之间时间(单位为毫秒),默认为0毫秒。 |
4.2使用方法
mouse.click(x, y)
mouse.click(x, y, **kwargs)
5.dblclick模拟鼠标双击
鼠标双击是mouse.move()、mouse.down()、mouse.up()、mouse.down()和mouse.up()的快捷方式。
5.1参数详解
|
参数 |
类型 |
释义 |
|---|---|---|
|
x |
float |
x横向坐标 |
|
y |
float |
y纵向坐标 |
|
button |
list["left", "middle", "right"] |
左中右可选,是点击元素的位置:"left", "middle", "right", 默认参数是left |
|
click_count |
int |
点击次数,默认值为1,含义参考:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail |
|
delay |
float |
按下按键和松开按键之间时间(单位为毫秒),默认为0毫秒。 |
5.2使用方法
mouse.dbclick(x, y)
mouse.dbclick(x, y, **kwargs)
6.小结
今天主要讲解了playwright如何模拟鼠标进行操作的一些方法以及示例基础知识,也很简单。好了,今天时间不是很早了,宏哥就讲解和分享到这里,感谢您耐心的阅读!!!
《最新出炉》系列入门篇-Python+Playwright自动化测试-44-鼠标操作-上篇的更多相关文章
- Spring实践系列-入门篇(一)
本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...
- Google C++测试框架系列入门篇:第三章 基本概念
上一篇:Google C++测试框架系列入门篇:第二章 开始一个新项目 原始链接:Basic Concepts 词汇表 版本号:v_0.1 基本概念 使用GTest你肯定会接触到断言这个概念.断言是用 ...
- Google C++测试框架系列入门篇:第二章 开始一个新项目
上一篇:Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest? 原始链接:Setting up a New Test Project 词汇表 版本号:v_0.1 开始一个新项目 ...
- Python+Selenium自动化 模拟鼠标操作
Python+Selenium自动化 模拟鼠标操作 在webdriver中,鼠标的一些操作如:双击.右击.悬停.拖动等都被封装在ActionChains类中,我们只用在需要使用的时候,导入这个类就 ...
- 深入浅出ASP.NET Core系列(入门篇)
入门篇 1.1.专题介绍 1.2.环境安装 1.3.创建项目 1.4部署到IIS 1.5准备CentOS和Nginx环境 1.6部署到CentOS 2.1命令行和JSON的配置 2.2Bind建立配置 ...
- 0x00-Kali Linux 系列入门篇
Kali Linux介绍篇 Kali Linux 官网:https://www.kali.org/ Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Li ...
- Node.js 从入门到茫然系列——入门篇
在创建服务的时候,我们一般代码就是: var http = require("http"); var server = http.createServer(function(req ...
- Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest?
原始链接:Introduction: Why Google C++ Testing Framework? 词汇表 版本号:v_0.1 介绍:为什么使用GTest? GTest帮助你写更好的C++测试代 ...
- python - 接口自动化测试 - MysqlUtil - 数据库操作封装
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: mysql_util.py @ide: PyCharm C ...
- Sping Boot入门到实战之入门篇(三):Spring Boot属性配置
该篇为Sping Boot入门到实战系列入门篇的第三篇.介绍Spring Boot的属性配置. 传统的Spring Web应用自定义属性一般是通过添加一个demo.properties配置文件(文 ...
随机推荐
- Games101:作业6
说明 本次作业主要实现对上一次作业代码的重构以及使用BVH加速求交的交点判断和递归调用 代码框架的修改 有影响的改动就是框架中定义了两个结构体一个是光线ray,一个是交点Intersection 交点 ...
- 初学 FSMC - 外扩SRAM(三)
1. FSMC相关函数 //FSMC初始化 void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct); //FSMC ...
- python爬虫爬取科技报告数据,共计40余万条(来自国家科技报告服务系统)
按学科分类[中图分类] 共计三十余万条科技报告数据 爬取的网址:https://www.nstrs.cn/kjbg/navigation !!! 如果要完整地跑起来代码,需要先看一下我的这篇博客,完成 ...
- 【已解决】同时使用ajax和form表单传数据的冲突问题
昨天踩了一个大坑,下面总结一下: 前后端数据交互的两种方式: 1.ajax发起请求(请求中可以带有数据)并获取返回的数据 下面给出一个ajax的常见格式: 1 $.ajax({ 2 url:" ...
- 8 JavaScript函数
8 JavaScript函数 在JS中声明函数和python差不多. 也要有一个关键字顶在前面. python是def, 到了JS里换成了function, 只不过在JS中没有像python那么死板, ...
- Avalonia的Window生命周期
Avalonia中的Window 在Avalonia中,Window是一个基本的UI元素,它代表了一个应用程序的窗口.每个Window都可以包含其他的UI元素,如按钮.文本框等,并可以响应各种用户输入 ...
- Jetty的http3模块
启用http3模块,执行如下命令: java -jar $JETTY_HOME/start.jar --add-modules=http3 命令的输出,如下: ALERT: There are ena ...
- 小师妹学JavaIO之:try with和它的底层原理
目录 简介 IO关闭的问题 使用try with resource try with resource的原理 自定义resource 总结 简介 小师妹是个java初学者,最近正在学习使用java I ...
- 【Learning eBPF-3】一个 eBPF 程序的深入剖析
从这一章开始,我们先放下 BCC 框架,来看仅通过 C 语言如何实现一个 eBPF.如此一来,你会更加理解 BCC 所做的底层工作. 在这一章中,我们会讨论一个 eBPF 程序被执行的完整流程,如下图 ...
- 使用IDEA直接连接数据库报错:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.
错误详情:使用IDEA直接连接数据库报错:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' ...