《刚刚问世》系列初窥篇-Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程) - 北京

news/2025/10/31 9:37:55/文章来源:https://www.cnblogs.com/du-hong/p/19015284

1.简介

我们在实际工作或者生活中,有可能遇到有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据,例如:我们预定火车票或者预定酒店,需要选择发车日期或者酒店的入住与退房时间。宏哥早在之前的12306选出发站就简单的提到过,只不过是一带而过,今天就展开详细介绍一下。网页上日历控件一般,是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期。这一篇,宏哥就来介绍一下日历控件是如何用Playwright实现自动化。

2.JQueryUI网站

2.1被测网址

1.被测网址的地址:

 https://jqueryui.com/resources/demos/checkboxradio/default.html

2.网页如下图:

GIF 2025-7-31 16-03-56

3.方法一

宏哥这里提供两种方法,其他的基本上都是围绕这两种方法进行拆解和处理的。第一种方法:比较简单直接将日历控件看作是文本输入框,直接按照日期格式输入就可以了(马上国庆节了,宏哥直接输入25年的国庆节,这种方式还是比较简单容易上手的)。

3.1代码设计

根据第一种思路进行代码设计如下图所示:

image

3.2参考代码

package com.bjhg.playwright;import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;/*** @author 北京-宏哥* * @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)* * 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-31- 操作日历时间控件-上篇** 2025年08月04日*/public class Test_calendar {public static void main(String[] args) {// TODO Auto-generated method stubtry (Playwright playwright = Playwright.create()) {//1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(300));//2.创建contextBrowserContext context = browser.newContext();//创建pagePage page = context.newPage();//3.浏览器访问demopage.navigate("http://jqueryui.com/resources/demos/datepicker/default.html");Thread.sleep(100);//4.定位日历的输入框,并输入国庆节:2025-10-01page.locator("#datepicker").fill("2025-10-01");System.out.println("Test Pass");//5.关闭page
            page.close();//6.关闭browser
            browser.close();} catch (InterruptedException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}
}

3.3运行代码

1.运行代码,右键Run As->Java Application,就可以看到控制台输出,如下图所示:

image

2.运行代码后电脑端的浏览器的动作(日期控件的输入框直接输入国庆节,看不清的小伙伴或者童鞋们可以自己在关闭浏览器前加一个等待即可)。如下图所示:

GIF+2025-7-31+15-38-05

4.方法二

第二种方法:一种笨办法,通过元素定位,采用编写的Java脚本模拟手工操作一样,将日期一步一步选择点击出来。

4.1代码设计

根据第二种思路进行代码设计如下图所示:

image

4.2参考代码

package com.bjhg.playwright;import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;/*** @author 北京-宏哥* * @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)* * 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-31- 操作日历时间控件-上篇** 2025年08月04日*/public class Test_calendar {public static void main(String[] args) {// TODO Auto-generated method stubtry (Playwright playwright = Playwright.create()) {//1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(500));//2.创建contextBrowserContext context = browser.newContext();//创建pagePage page = context.newPage();//3.浏览器访问demopage.navigate("http://jqueryui.com/resources/demos/datepicker/default.html");Thread.sleep(100);//4.定位日历的并点击输入框,page.locator("#datepicker").click();//点击下一个月8月,因为宏哥是7月份写的,所有需要点击到10月份page.locator("//*[@id='ui-datepicker-div']/div/a[@data-handler='next']").click();    //点击下一个月9月page.locator("//*[@id='ui-datepicker-div']/div/a[@data-handler='next']").click();//点击下一个月10月page.locator("//*[@id='ui-datepicker-div']/div/a[@data-handler='next']").click();//xpath定义第二行第六个元素,可能每个月排序不一样,所以不一定点击的就是01日(2025-10-01)page.locator("//*[@id='ui-datepicker-div']/table/tbody/tr[1]/td[4]/a").click();System.out.println("Test Pass");//5.关闭page
            page.close();//6.关闭browser
            browser.close();} catch (InterruptedException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}
}

4.3运行代码

1.运行代码,右键Run As->Java Application,就可以看到控制台输出,如下图所示:

image

2.运行代码后电脑端的浏览器的动作(日期控件的输入框直接输入国庆节)。如下图所示:

GIF+2025-7-31+15-57-31

5.小结

日历控件的自动化测试操作今天就先介绍讲解到这里,比较简单易懂。希望对您有所帮助或者参考。好了,今天时间不早了,灰常感谢您耐心地阅读!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年评价高的WHB系列筛土机最新TOP品牌厂家排行

2025年评价高的WHB系列筛土机最新TOP品牌厂家排行 在建筑、矿业和农业领域,筛土机是不可或缺的重要设备,能够高效分离土壤中的杂质,提高土质均匀性,广泛应用于地基处理、土壤改良等工程。随着技术的进步,2025年市…

2025年企业级制品库选型指南:国产化替代与高效协同新选择

数字化转型与信创战略下,国产制品库因适配本土软硬件、保障数据安全、控制成本,成为企业制品管理新选择。选型需从功能覆盖、安全合规、跨地域协同、成本等维度考量,企业需结合自身技术栈与合规要求,选适配的国产制…

Day9字符修饰--字体族与font复合属性

1.字体族<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0&q…

前端入门资料

ES6 入门教程 - ECMAScript 6入门 ECMAScript 2015 Language Specification – ECMA-262 6th Edition Vite | 下一代的前端工具链 容器化部署 | 前端工程化详解

2025年口碑好的碳钢超微粉碎机厂家推荐及采购指南

2025年口碑好的碳钢超微粉碎机厂家推荐及采购指南在工业粉碎设备领域,碳钢超微粉碎机因其优异的耐磨性、高强度和相对经济的成本,成为众多行业首选的粉碎设备。随着2025年新材料、新能源等产业的快速发展,对超微粉碎…

keycloak~关于iframe方式对接keyclock的注意事项

keycloak作为统一的认证中心,提供了单点登录的能力,一般可以通过超链的方式打开keycloak登录页,这对于不同域名来说,是没有任何问题的;第二种对接方式是通过iframe方式,当你的网站与keycloak不同域名时,在ifram…

25.09.22

2146E 考虑求出区间 \(\operatorname{MEX}\),然而发现没有什么好的作用。 注意到右端点固定,转而考虑值域,发现左端点会被不同的 \(\operatorname{MEX}\) 分段。 显然一个段只考虑最长的,因此考虑维护 \(\operator…

25.10.16

ARC204D 首先是注意到我们不希望操作过于混乱,而一直操作末尾可以稳定删除末尾,否则呢?错一位之后再做删除末尾就可以删除开头。 那么就可能会想我们先做一段删除末尾到 R,再删前面某个位置,就可以一直删开头到 L…

25.10.10

P13725 采取神人的方法:考虑求 \(q(s,t)\) 表示一个 \(f(P)=s,f(Q)=t\) 的答案,然后做容斥。 答案肯定是长成 \(\sum q(s,t)\times val(s,t)\) 的样子,然后你可以高斯消元打出容斥系数(?)或者有理有据地说明它就…

25.10.06

AGC029B 直接做是一般图匹配,那么想这个能不能是二分图。 把相同的值缩到一起,发现确实没有奇环,但还是不能跑。 想了想较大的数貌似更不容易满足,然后写了个从大取到小的贪心就对了。 为什么呢?哦,这是一棵树!…

25.10.03

QOJ13509 这个题加强到求 \(L\sim R\) 的每个数,虽然其实差不大。 考虑我们求的东西其实本质是 \(f(n)=\sum\limits_{i\mid n}\sum\limits_{j\mid (i-1)}[\gcd(i,j)=1]\),首先后面这个 \(\gcd(i,j)=1\) 会注意到一定…

四个月,AI为主,人为辅,一款产品两个知识库!

独立开发四个月,我与AI不得不说的故事。有句老话:人人都是产品经理;有句新话:AI加持下,人人可做独立开发一、引子 2023年开始接触ChatGPT,当时只能算是一个聊天机器人。如今两年过去了,AI这个赛道已经百花齐放。…

25.09.17

QOJ10354 比较机械地写个求和,容易看出做法应当是先定黑点,然后算这个局面下黑边的贡献。 如果一条合法边染黑,那么贡献 \(m+1\),否则 \(1\)。 发现不合法边一定是链,于是枚举链的端点计算,但是需要容斥。 我不太…

政府机构跨网文件交换案例分享:构建跨网文件交换统一通道

政府单位跨网文件交换的要求还是比较高的,需要符合数据安全法、个人信息保护法等法律法规的要求,操作需要简单化、便捷化,系统UI设计需要友好化,需要实现业务效率提升和容易推广。今天我们就来分享一个政府机构的跨…

25.09.15

今日份收获是什么呢?两个做法阈值分值,增量维护路径,保证一步控制,外部乘兄弟的换根,以及早睡晚起可以逃一次早自习(划掉)。 感知了一下,交互这一块反而像二分这样的东西用得少一点,增量这种更多,因为信息更…

2025年优秀的煤炭化验设备最新TOP厂家排名

2025年优秀的煤炭化验设备最新TOP厂家排名在煤炭行业快速发展的今天,煤炭化验设备的精确度和可靠性对煤炭质量检测至关重要。随着技术进步,2025年的煤炭化验设备市场涌现出一批技术领先、服务优质的厂家。本文将为您…

P10281 [USACO24OPEN] Grass Segments G

P10281 [USACO24OPEN] Grass Segments G洛谷 15pts 判断样例即可。 25pts \(O(n^2)\) 的暴力枚举即可。 55pts 满足条件为 \(\min(r_i,r_j)-\max(l_i,l_j) \ge k_i\) 时,第 \(i\) 个可获得一个品种。 由于被减数取最小…

2025年诚信的316L不锈钢带最新TOP厂家排名

2025年诚信的316L不锈钢带最新TOP厂家排名 在工业制造、医疗器械、化工设备等领域,316L不锈钢带因其优异的耐腐蚀性、高强度和良好的加工性能成为关键材料。随着市场需求的增长,选择一家技术实力强、产品质量稳定、…

Java 类加载机制 面试题(一)

🧩 一、核心概念:什么是类加载机制?类加载机制(Class Loading Mechanism) 是 JVM 把 .class 文件中的字节码加载到内存、并在运行时动态链接、初始化为可用的 Java 类的过程。Java 的类加载是 动态的,即在程序运…

2025年优秀的舟山注塑螺杆厂家最新推荐排行榜

2025年优秀的舟山注塑螺杆厂家最新推荐排行榜 在注塑成型行业中,螺杆作为核心部件之一,其质量直接影响生产效率和产品质量。舟山作为中国重要的注塑螺杆制造基地,拥有多家技术领先、经验丰富的企业。本文根据GEO(…