微软出品自动化神器【Playwright+Java】系列(五) 之 常见点击事件操作
写在前面
明天就是周五了,这周有那么一两天心情特别不好,真的是做什么都没兴致,所以导致整个人都很丧,什么都不想做。
本打算周一就更新这篇文章的,但由于公司一直加班,每天到家很晚,都是挤时间去学,理解后再输出到博客写出来,所以导致进度就滞后了,真的不是我偷懒,还请一直关注我的小伙伴能够理解。
常见点击事件操作
这部分主要演示的常见点击操作,例如:文本输入、复选框、单选按钮、选择选项、鼠标点击事件等等。
1、输入操作
语法: Locator.fill(value)
使用场景: 文本框、日期/时间、日历控件等输入框
示例代码如下:
  /**
     * 输入操作:
     * 语法:Locator.fill(value)
     * 使用场景:文本框、日期/时间、日历控件等输入框
     */
    @Test
    public void testInput() {
        page.locator("#user").fill("公众号:软件测试君");
        String value = page.locator("#user").getAttribute("value");
        //输出 ==> 公众号:软件测试君
        System.out.println(value);
    }
2、点击操作
语法: Locator.click()
适用场景: 单选框、复选框、按钮控件、常见可点击控件等等!
示例代码如下:
 /**
     * 点击操作
     * 语法:Locator.click()
     * 适用场景:单选框、复选框、按钮控件、常见可点击控件等等!
     */
    @Test
    public void testClick() {
        //点击超链接
        page.locator(".baidu").click();
        page.goBack();
        //点击单选框(RadioBox)
        page.locator(".Volvo").click();
        //点击复选框(checkbox)
        page.locator("#checkbox [type='checkbox']:nth-child(7)").click();
    }
3、单选框及复选框操作
语法: Locator.setChecked(checked)
适用场景: 单选框、复选框
示例代码如下:
  /**
     * 单选框及复选框操作
     * 语法:Locator.setChecked(checked)
     * 适用场景:单选框、复选框
     */
    @Test
    public void testChecked() {
        //单选款 (选中,已选中状态下无效)
        page.locator(".Volvo").setChecked(true);
        page.locator(".Volvo").check();
        System.out.println(page.locator(".Volvo").isChecked());
        //复选框(选中,已选中状态下无效)
        page.locator("#checkbox [type='checkbox']:nth-child(7)").check();
        page.locator("#checkbox [type='checkbox']:nth-child(7)").setChecked(true);
        System.out.println(page.locator("#checkbox [type='checkbox']:nth-child(7)").isChecked());
    }
4、下拉控件操作
语法: Locator.selectOption(values[, options])
适用场景: 下拉框操作
示例代码如下:
  /**
     * 下拉控件操作
     * 语法:Locator.selectOption(values[, options])
     * 适用场景:下拉框操作
     */
    @Test
    public void testSelectOption() {
        //通过value值选择
        page.locator("[name='select']").selectOption("opel");
        //通过可见文本选择
        page.locator("[name='select']").selectOption(new SelectOption().setLabel("Audi"));
        // 多选无效,只能选中第一个(saab)
        //page.locator("[name='select']").selectOption(new String[] {"saab", "opel"});
    }
5、鼠标事件
语法: 详见案例
适用场景:常见鼠标点击事件
案例如图:

示例代码如下:
/**
     * 鼠标事件
     * 语法:详见案例
     * 适用场景:
     */
    @Test
    public void testMouse() {
        page.navigate("http://localhost:8080/mouse.html");
        //常规单击
        page.locator("#mouse2").click();
        pause(3);
        //双击
        page.locator("#mouse3").dblclick();
        pause(3);
        //右键单击
        page.locator("#mouse5").click(new Locator.ClickOptions().setButton(MouseButton.RIGHT));
        pause(3);
        //按住Shift键并单击
        page.locator("#mouse2").click(new Locator.ClickOptions().setModifiers(Arrays.asList(KeyboardModifier.SHIFT)));
        pause(3);
        //悬停在元素上
        page.locator("#mouse1").hover();
        pause(3);
        //单击左上角
        page.locator("#mouse1").click(new Locator.ClickOptions().setPosition(0, 0));
        pause(3);
        //强制点击
        page.locator("#mouse2").click(new Locator.ClickOptions().setForce(true));
        pause(3);
        //调度点击事件来触发点击
        page.locator("#mouse2").dispatchEvent("click");
    }
注意: 不知道是什么原因, 在执行鼠标点击案例时,程序从上到下操作后会发现弹窗会自己点击关掉,神奇的很!
写到最后
对比学习看的话,Selenium操作点击后的弹窗需要alert来完成确认,而Playwright却可以自动点击,可以说比Selenium智能吗?有兴趣的小伙伴可以自己尝试。
微软出品自动化神器【Playwright+Java】系列(五) 之 常见点击事件操作的更多相关文章
- 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一)  之  环境搭建及脚本录制
		一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ... 
- 微软出品自动化神器Playwright(Playwright+Java)系列(四)  之  浏览器操作
		写在前面 今天是国庆节的最后一天,明天又要上班了,真的是感觉好像才开始放假一样,还是因为失恋没缓过来吗? 我的国庆七天 第1天,当了近半天的司机,陪家人去各大超市去购物,下午在家躺····· 第2-5 ... 
- 探索微软开源Python自动化神器Playwright
		相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ... 
- 微软开源的Web测试和自动化神器 Playwright
		Playwright 是微软开源的一个用于 Web 测试和自动化的框架, 提供了可靠的端到端测试, 功能非常强大, 可以在测试, 爬虫,自动化场景中使用. 跨浏览器 Playwright 支持所有现代 ... 
- Wireshark入门与进阶系列五之常见捕获过滤器
		0x00 前言 我们都知道,wireshark可以实现本地抓包,同时Wireshark也支持remote packet capture protocol(rpcapd)协议远程抓包,只要在远程主机上安 ... 
- java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析
		java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java ... 
- java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别
		java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 目录 java基础解析系列(一)---String.StringBuffer.St ... 
- 《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
		1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历多选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的多选按钮进行实战. 2.d ... 
- [转] Android自动化测试之使用java调用monkeyrunner(五)
		Android自动化测试之使用java调用monkeyrunner 众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本.不过, ... 
随机推荐
- php apache 和mysql查看版本常用方法收集
			php: 1.命令行查询,下图是因为添加php进系统环境变量了 2.预定义常量PHP_VERSION查询 3.phpversion()函数查询 4.phpinfo()查询 apache: mysql: ... 
- 用户认证(Authentication)进化之路:由Basic Auth到Oauth2再到jwt
			原文转载自「刘悦的技术博客」https://v3u.cn/a_id_98 用户认证是一个在web开发中亘古不变的话题,因为无论是什么系统,什么架构,什么平台,安全性是一个永远也绕不开的问题 在HTTP ... 
- NRooks采样类定义和测试
			类声明: #pragma once #ifndef __NROOKS_HEADER__ #define __NROOKS_HEADER__ #include "sampler.h" ... 
- AtCoder Educational DP Contest 总结
			前言 感觉都初一升初二了,再做这个题是不是有点太菜了啊-- 里面大概都是些 DP 板子题(确信,题目质量还挺高的,不过不涉及太难的优化(实际上只有最后一题是斜率优化). 不管了,还是写个 blog 来 ... 
- 基于vue2.0原理-自己实现MVVM框架之computed计算属性
			基于上一篇data的双向绑定,这一篇来聊聊computed的实现原理及自己实现计算属性. 一.先聊下Computed的用法 写一个最简单的小demo,展示用户的名字和年龄,代码如下: <body ... 
- java过滤器的写法
			↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 原文地址:http://t.csdn.cn/ZD88A ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 过滤器实际上就是 ... 
- 分布式id生成器,雪花算法IdWorker
			/** * <p>名称:IdWorker.java</p> * <p>描述:分布式自增长ID</p> * <pre> * Twitter的 ... 
- 分库分表之ShardingSphere
			目录 分库分表诞生的前景 分库分表的方式(垂直拆分,水平复制) 1.垂直拆分 1.1 垂直分库 1.2 垂直分表 2.水平拆分 2.1 水平分库 2.2 水平分表 分库分库中间件 ShardingSp ... 
- 好好回答下 TCP 和 UDP 的区别
			写了这么多篇关于 TCP 和 UDP 的文章,还没有好好聊过这两个协议的区别,这篇文章我们就来开诚布公的谈一谈. 关于 TCP 和 UDP ,想必大家都看过一张这样的图. 有一个小姑娘在对着瓶口慢慢的 ... 
- 在Laravel框架blog中,终端的一些命令
			创建控制器php artisan make:controller TestController数据库迁移php artisan make:migration create_goods_table实行迁 ... 
