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

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

时间:2023-06-30 11:35:38浏览次数:35  
标签:web playwright checked locator checkbox 选中 print page 软件测试

前言

工作和生活中,经常会遇到我们需要进行选择的情况,比如勾选,或者我们选择性别,男女两个性别总是不能同时选中的,比如我们在选择兴趣爱好时,我们可以选择多个自己感兴趣的话题,比如篮球足球电竞等话题。我们在执行自动化测试的过程中,必须要学会处理这样的情况。

页面示例

以下面的界面为例:

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

页面代码如下:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
</head>
<body>
<fieldset>
<legend>单选按钮radio</legend>
<form action="">
    <label for=""><input type="radio" name="brand" value="toyota" id="toyota">丰田</label>
    <label for=""><input type="radio" name="brand" value="volkswagen" id="volkswagen">大众</label>
    <label for=""><input type="radio" name="brand" value="honda" id="honda">本田</label>
    <label for=""><input type="radio" name="brand" value="bmw" id="bmw" checked="">宝马</label>
    <label for=""><input type="radio" name="brand" value="benz" id="benz" >奔驰</label>
</form>
</fieldset>
<br>
<fieldset>
<legend>多选按钮checkbox</legend>
<form action="">
    <input type="checkbox" name="checkbox" value="动力" id="power">动力<br>
    <input type="checkbox" name="checkbox" value="油耗" id="fuel">油耗<br>
    <input type="checkbox" name="checkbox" value="舒适" id="comfort" >舒适 <br>
    <input type="checkbox" name="checkbox" value="驾驶" id="driving" >驾驶 <br>
</form>
</fieldset>
</body>
</html>

playwright选择操作

上述的就是我们最常见的radio单选框和checkbox多选框,playwright提供了一些处理单选框以及多选框的方法,如下:

  • locator.click() 点击操作
  • locator.check() 选中
  • locator.uncheck() 不选中
  • locator.set_checked() 设置选中状态
  • locator.is_checked() 判断是否被选中
  1. radio 单选操作

radio是单选,以我们的html文件为例,如果宝马已经被选了再点击宝马是不会改变状态的,我们只有点击其他的按钮才会改变状态

  • click()点击操作
# radio 操作
    status1 = page.locator('#bmw').is_checked()
    print(status1)
    # 选择奔驰
    page.locator('#benz').click()
    print(page.locator('#benz').is_checked())
  • check() 检查操作
# 选择toyota
    page.locator('#toyota').check()
    print(page.locator('#toyota').is_checked())
  • set_checked()
# 选择大众
    page.locator('#volkswagen').set_checked(checked=True)
    print(page.locator('#volkswagen').is_checked())

注:set_checked()需传checked 参数,参数为布尔值

  • 调用page对象
page.check('#honda')

page.set_checked('#honda', checked=True)

需注意的是,如果bmw本身就是选择状态,去设置unchecked 状态,会报错: Clicking the checkbox did not change its state,如下

page.locator('#bmw').uncheck()

报错如下:

result = next(iter(done)).result()
playwright._impl._api_types.Error: Clicking the checkbox did not change its state
=========================== logs ===========================
waiting for locator("#bmw")
  1. checkbox 复选框

checkbox 复选框跟 radio 操作的区别在于,如果已经被选择了,再点击会被取消选中,所以不会有前面的报错。

  • click(),未选中的时候,点击就会被选中。
# checkbox 操作
    page.locator('#power').click()
    print(page.locator('#power').is_checked())
  • check() 或 set_checked() ,如果想让元素必须是选择状态(不管之前有没被选中),可以使用这两种方法
page.locator('#comfort').check()
    print(page.locator('#comfort').is_checked())

   # checkbox 操作
    page.locator('#driving').set_checked(checked=True)
    print(page.locator('#driving').is_checked())
  • 批量选中checkbox,定位全部CheckBox 批量选中
# checkbox 操作
    box = page.locator('[type="checkbox"]')
    for item in box.all():
        item.check()

总结

本文主要介绍了playwright对选择框的处理,playwright对选择框的处理比selenium更为简单,没有类似selenium的复杂操作,更为直接便捷。


标签:web,playwright,checked,locator,checkbox,选中,print,page,软件测试
From: https://blog.51cto.com/u_15640304/6589249

相关文章

  • 软件测试|web自动化测试神器playwright教程(二十三)
    前言我们在进行web自动化时,经常遇到一些不好操作的元素,普通的元素定位和操作容易报错,如果我们使用的selenium的话,就可以使用selenium调用js脚本进行操作。在playwright中也有类似的方法,使用page.evaluate()执行JavaScript脚本。page.evaluate()和page.evaluate_handle()之间的唯......
  • 基于SpringMVC搭建WebSocker
    SpringMVC的搭建请参考我以前的文章基于XML搭建SpringMVC项目基于Spring注解搭建SpringMVC项目(推荐)1.添加pom依赖本文使用最新的Spring6,一些依赖的问题需要自行解决<!--添加socket支持--><dependency><groupId>org.springframework</groupId><a......
  • .net6搭建websocket
    当使用.NET6构建WebSocket微服务时,可以按照以下步骤进行操作:1.创建新的.NET6项目:打开适用于.NET6的IDE(如VisualStudio2022或VisualStudioCode),创建一个新的空白项目。.net6默认引入了Microsoft.AspNetCore.WebSockets2,3步骤省略2.添加WebSocket支持:确保项目引用了`Mi......
  • OpenWebSpider 安装使用
    OpenWebSpider是一个很好用的网络爬虫,也可以叫做“网络蜘蛛”.安装:1.使用Vs.net2003编译,记得要copylibmysql.dll到工程里2.配置文件openwebspider.conf将已经启动了的mysql数据库用户名,密码填写好3.数据库建立执行sql_struct.txt下的文件目录。OKGoahead,grabbleyourw......
  • 音视频之webRTC和直播
    webrtc是什么Webreal-timecommunication,实时通讯解决方案,涵盖音视频采集、通讯建立、信息传输、音视频显示。怎么做到的音视频采集通过webrtc中MediaStreamAPIgetUserMedia可以获取设备媒体流,包括麦克风、摄像头、屏幕画面等,需要注意兼容性问题。端到端如何音视......
  • Nginx 常用的基础配置(web前端相关方面)
    基础配置userroot;worker_processes1;events{worker_connections10240;}http{log_format'$remote_addr-$remote_user[$time_local]''"$request"$sta......
  • 全栈测试开发系列----WebDriver API及对象识别技术(二)---selenium验证码处理的多种实现
    前言对于测试人员而言,不管是进行性能测试还是自动化测试,验证码的处理都是棘手的存在,在WEB应用中,大部分系统在用户登录的时候都要求用户输入验证码,且验证码的种类繁多,如纯数字、纯字母、汉子组合、数学题运算、滑动图标、图片、短信、邮箱、语音等。既然要实现验证码的处......
  • 使用 Python WebSSH 从浏览器连接到SSH终端
    IntroductionOrdinarily,youconnecttoanSSHserverusingacommandlineappinaterminal,orterminalemulatorsoftwarethatincludesanSSHclient.Sometools,likePython’sWebSSH,makeitpossibletoconnectoverSSHandrunaterminaldirectlyin......
  • 内网使用postman测试websocket接口(无法登录的情况下)
    postman测试websocket接口。但是发现老版本的postman不支持websocket接口的测试。于是直接上最新版本postman。打开postman,new,选择websocket。发现选不了,提示:youneedtobeinaworkspacetoperformthisaction.然后我去工作台,发现强制要登录!!!但是问题在于:我这公司电脑不......
  • 软件测试|Python科学计算神器numpy教程(二)
    前言上一篇文章我们介绍了numpy的安装和ndarray的部分知识,本篇文章我们来介绍一下numpy的数组的常用属性以及创建数组相关内容。数组常用属性ndarray.shapeshape属性的返回值一个由数组维度构成的元组,比如2行3列的二维数组可以表示为(2,3),该属性可以用来调整数组维度的大小,示......