• 《最新出炉》系列入门篇-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如何模拟鼠标进行操作的一些方法以及示例基础知识,也很简单。好了,今天时间不是很早了,宏哥就讲解和分享到这里,感谢您耐心的阅读!!!

  • 相关阅读:
    nginx做负载均衡服务器,配置动静分离
    微服务商城 spring cloud+spring boot+mybatis b2b2c商城
    CentOS安装/卸载Anaconda(图文详解)
    GUN、MIT、Apache、BSD、MPL各种开源协议介绍和区别
    【Python】10 自动选课
    基于微信小程序的机房设备故障报修平台
    【无标题】CTreeCtrl更改-/+展开按钮颜色
    SpringMVC中的自定义注解
    2D游戏案例:游戏场景搭建
    自定义View
  • 原文地址:https://www.cnblogs.com/du-hong/p/17877090.html