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

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

时间:2023-08-06 17:34:08浏览次数:29  
标签:web playwright context sync key keyboard page 软件测试

前言

我们在使用selenium进行自动化测试的过程中,遇到输入框时,我们可以使用send_keys()输入内容,也可以使用键盘事件向输入框内输入内容,只是使用键盘事件时需要导入Keys,作为一款强大的工具,selenium有的功能,playwright也有,playwright同样可以使用键盘输入内容,本篇文章就来为大家介绍一下playwright的键盘事件。

键盘操作

playwright的Keyboard 方法是用于键盘操作的函数,提供了一个用于管理虚拟键盘的 API。高级 api 是keyboard.type(),它接受原始字符并在您的页面上生成适当的keydown、keypress/input和keyup事件。
为了更好地控制,您可以使用keyboard.down()、keyboard.up()和keyboard.insert_text()手动触发事件,就好像它们是从真实键盘生成的一样。

  1. 选择和删除文本
from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.keyboard.type("playwright")
        page.keyboard.down("Shift")
        for i in range(6):
            page.keyboard.press("ArrowLeft")
        page.keyboard.up("Shift")
        page.keyboard.press("Backspace")

        page.pause()
        context.close()
        browser.close()

key_option()

运行脚本之后,playwright的文本中后面6个字母被删除,结果如下图所示:

在这里插入图片描述

  1. 输入大写字母
from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.keyboard.press("Shift+KeyA")
        page.pause()

        context.close()
        browser.close()

key_option()

运行脚本,界面如下图所示:

在这里插入图片描述

注:使用Shift+A一样可以按出大写字母A

  1. 全选操作
from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.keyboard.type("playwright")
        page.keyboard.press("Control+A")
        page.pause()

        context.close()
        browser.close()
key_option()

运行脚本之后,界面如下所示:

在这里插入图片描述

注:Mac系统的键盘操作为‘Meta+A’

Down事件

调度keydown事件

key可以指定预期的keyboardEvent.key值或单个字符来为其生成文本。可以在此处key找到这些值的超集。键的例子是:

F1- F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, , , Insert,等_PageDownPageUpArrowRightArrowUp

还支持以下修改快捷方式:Shift, Control, Alt, Meta, ShiftLeft.

按住将键入对应于大写字母Shift的文本。key

如果key是单个字符,则区分大小写,因此值a和A将生成各自不同的文本。

如果key是修饰键 、Shift、Meta、Control或Alt,则后续按键将在该修饰键激活的情况下发送。要释放修饰键,请使用keyboard.up()。

按下一次键后,对keyboard.down()的后续调用会将repeat设置为 true。要释放键,请使用keyboard.up()。

语法如下:

keyboard.down(key)

insert_text 插入文本

语法如下:

page.keyboard.insert_text("xxxx")

注:该操作只调度input事件,不发出keydown,keyup或keypress事件。

press 长按

key可以指定预期的keyboardEvent.key值或单个字符来为其生成文本。可以在此处key找到这些值的超集。键的例子是:F1- F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter,Insert等

示例代码:

from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://keycode.info")
        page.keyboard.press("a")
        page.screenshot(path="a.png")
        page.keyboard.press("ArrowLeft")
        page.screenshot(path="arrow_left.png")
        page.keyboard.press("Shift+O")
        page.screenshot(path="o.png")
        page.pause()

        context.close()
        browser.close()
key_option()

运行脚本,截取的图片如下:
在这里插入图片描述

Type 操作

为文本中的每个字符发送keydown、keypress/input和事件。

示例如下:

from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.keyboard.type("拜仁")
        page.keyboard.type("慕尼黑", delay=100)
        page.pause()

        context.close()
        browser.close()
key_option()

运行脚本,结果如下图:

在这里插入图片描述

up 方法

调度一个keyup事件,语法示例如下:

keyboard.up(key)

总结

本文主要介绍了playwright对键盘操作的方法,与selenium类似,playwright同样支持对键盘的操作,同时,playwright的键盘操作比之selenium更加方便快捷。

标签:web,playwright,context,sync,key,keyboard,page,软件测试
From: https://www.cnblogs.com/hogwarts/p/17609622.html

相关文章

  • 软件测试|web自动化测试神器playwright教程(二十五)
    前言鼠标为我们使用电脑提供了很多方便,我们看到的东西就可以将鼠标移动过去进行点击就可以打开或者访问内容,当页面内容过长时,我们也可以使用鼠标滚轮来实现对整个页面内容的查看,其实playwright也有鼠标操作的方法,本文我们就来介绍playwright的鼠标操作。鼠标操作Mouse鼠标操......
  • 软件测试|没有任何文档,怎么快速了解接口的信息?
    没有接口文档的情况下理解接口信息,通过询问开发,或查看代码来了解接口。当然最重要的是利用接口本身提供的一切可见的细节,比如: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案例在上面基础之上,进行下......
  • 《软件测试的艺术》原书第三版 - 第六章 - 更高级别的测试
    第六章更高级别的测试软件产品开发周期的模型软件最终用户的要求转换为一系列书面的需求。这些需求就是该软件产品要实现的目标。通过评估可行性与成本、消除相抵触的用户需求、建立优先级和平衡关系,将用户需求转换为具体的目标。将上述目标转换为一个准确的产品规格说明,将......