首页 > 其他分享 >软件测试|web自动化测试神器playwright教程(二十五)

软件测试|web自动化测试神器playwright教程(二十五)

时间:2023-08-06 17:33:58浏览次数:33  
标签:web None playwright 鼠标 move page mouse click 软件测试

在这里插入图片描述

前言

鼠标为我们使用电脑提供了很多方便,我们看到的东西就可以将鼠标移动过去进行点击就可以打开或者访问内容,当页面内容过长时,我们也可以使用鼠标滚轮来实现对整个页面内容的查看,其实playwright也有鼠标操作的方法,本文我们就来介绍playwright的鼠标操作。

鼠标操作

Mouse 鼠标操作是基于page对象去调用,常用的鼠标操作有单击,双击,滚轮,按住,移动,释放。

  1. page.mouse 使用

Mouse 类在相对于视口左上角的主框架 CSS 像素中运行。

每个page对象都有自己的鼠标,可通过page.mouse访问。语法示例如下:

page.mouse.move(0, 0)
page.mouse.down()
page.mouse.move(0, 100)
page.mouse.move(100, 100)
page.mouse.move(100, 0)
page.mouse.move(0, 0)
page.mouse.up()
  1. 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].
        """

参数说明:

  • x 横向坐标位置
  • y 纵向坐标位置
  • delay 是mousedown 和 mouseup 事件中间的等待时间,单位是毫秒,默认是0
  • button 是点击元素的位置:"left", "middle", "right", 默认参数是left
  • click_count 是点击次数
mouse.click(x, y)
mouse.click(x, y, **kwargs)
  1. dblclick 双击

鼠标双击是mouse.move()、mouse.down()、mouse.up()、mouse.down()和mouse.up()的快捷方式,语法如下:

mouse.dblclick(x, y)
mouse.dblclick(x, y, **kwargs)
  1. mouse.down 按住鼠标

调度一个mousedown事件。

参数说明:

  • button 是点击元素的位置:"left", "middle", "right", 默认参数是left
  • click_count 是点击次数

语法示例:

mouse.down()
mouse.down(**kwargs)
  1. mouse.move 移动

调度一个鼠标移动事件,源码如下:

def move(self, x: float, y: float, *, steps: typing.Optional[int] = None) -> None:
        """Mouse.move

        Dispatches a `mousemove` event.

        Parameters
        ----------
        x : float
        y : float
        steps : Union[int, None]
            Defaults to 1. Sends intermediate `mousemove` events.
        """

语法如下:

mouse.move(x, y)
mouse.move(x, y, **kwargs)
  1. wheel 滚轮

调度一个wheel事件。(滚轮事件如果不处理可能会导致滚动,该方法不会等待滚动结束才返回。),语法如下:

mouse.wheel(delta_x, delta_y)

实例

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://sahitest.com/demo/clicks.htm")
    # 单击
    page.get_by_role("button", name="click me", exact=True).click()
    # 双击
    page.get_by_role("button", name="dbl click me").dblclick()
    # 右击
    page.get_by_role("button", name="right click me").click(button="right")

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

总结

本文主要介绍了playwright的鼠标操作,希望可以帮到大家。

标签:web,None,playwright,鼠标,move,page,mouse,click,软件测试
From: https://www.cnblogs.com/hogwarts/p/17609627.html

相关文章

  • 软件测试|没有任何文档,怎么快速了解接口的信息?
    没有接口文档的情况下理解接口信息,通过询问开发,或查看代码来了解接口。当然最重要的是利用接口本身提供的一切可见的细节,比如:URL、请求方法、参数、响应结果等,尽量去推断和判断接口的功能与作用。多种手段结合,观察分析,通常可以比较快速地理解接口的信息。需要注意的是:在了解接口的......
  • 软件测试|web自动化测试神器playwright教程(二十六)
    前言我们使用selenium进行元素拖拽时,通常要使用ActionChains来实现drag_and_drop的操作,playwright同样可以实现元素的拖拽和释放的操作。按住元素从页面的一个位置拖动到另外一个位置,有2种方式可以实现locator.drag_to(target:locator)先定位元素,调用drag_to方法到目标元素......
  • 基于web技术的大百科书店网站设计与实现
    随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们通过网络购买图书的数量在不断增加,网上书店的数量更是不断增加,使得大百科书店网站的开发成为一件有意义的事情。大百科书店网站主要是借助计算机,通过对大百科书店网站所需的信息管理,增加用户的......
  • Deconstructf-2023-WEB
    比赛比较简单,只做web,也是ak了。where-are-the-cookies 查看robots.txtcookie是no的base64编码,改成yes的base64即可  why-are-types-weird password为 sha1('aaroZmOk')//0e66507019969427134894567494305185566735,sha1后开头是0通过若比较,登入进去尝试注入,根......
  • web日刷
    今天是简单反序列化1<?php2include'flag.php';3classpkshow4{5functionecho_name()6{7return"Pkverysafe^.^";8}9}1011classacp12{13protected$cinder......
  • JavaWeb之Servlet入门版教务系统(二)
    本次要分享的内容是之前教务系统中系统管理模块下的角色列表功能,包括对角色信息进行增删改查以及对当前的用户进行角色的分配(重点讲解)。首先还是需要使用mysql数据库准备一张角色表,建表语句如下:DROPTABLEIFEXISTS`sys_role`;CREATETABLE`sys_role`(`role_id`int(11)NO......
  • .Net Web API 005 Controller上传小文件
    1、附属文件对象定义一般情况下,系统里面的文件都会附属一个对象存在,例如用户的头像文件,会附属用户对象存在。邮件中的文件会附属邮件存在。所以在系统里面,我们会创建一个附属文件对象,命名为AttachedFileEntity。其定义如下所示。///<summary>///附属文件实体对象///</summ......
  • 创建一个基于SpringBoot的web项目
    1、使用国内地址创建SpringBoot项目国内地址:https://start.springboot.io/2、项目结构1:Java目录下放Java相关文件2:static目录下放.css.html.js等文件,包括图片之类的3:templates目录下放模板文件4:放SpringBoot主要配置文件3、创建基于SpringBoot的web案例在上面基础之上,进行下......
  • 《软件测试的艺术》原书第三版 - 第六章 - 更高级别的测试
    第六章更高级别的测试软件产品开发周期的模型软件最终用户的要求转换为一系列书面的需求。这些需求就是该软件产品要实现的目标。通过评估可行性与成本、消除相抵触的用户需求、建立优先级和平衡关系,将用户需求转换为具体的目标。将上述目标转换为一个准确的产品规格说明,将......
  • 漏洞发现-web应用之漏洞探针利用修复
    原理分析1.已知CMS---如常见的dedecms.discuz,wordpress等源码结构,这种一般采用非框架类开发,但也有少部分采用的是框架类开发,针对此类源码程序的安全检测,我们要利用公开的漏洞进行测试,如不存在可采用白盒代码审计自行挖掘。(1.在漏洞平台如seebug、cnvd搜索关键字2.使用工具......