news 2026/5/10 21:46:41

Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程)

我们在实际工作或者生活中,有可能遇到有些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 stub

try (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.创建context

BrowserContext context = browser.newContext();

//创建page

Page page = context.newPage();

//3.浏览器访问demo

page.navigate("http://jqueryui.com/resources/demos/datepicker/default.html");

Thread.sleep(100);

//4.定位日历的输入框,并输入国庆节:2025-10-01

page.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 stub

try (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.创建context

BrowserContext context = browser.newContext();

//创建page

Page page = context.newPage();

//3.浏览器访问demo

page.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.小结

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 21:45:42

Cloudpods多云管理平台:从零开始的完整部署与使用指南

Cloudpods多云管理平台:从零开始的完整部署与使用指南 【免费下载链接】cloudpods 开源、云原生的多云管理及混合云融合平台 项目地址: https://gitcode.com/yunionio/cloudpods Cloudpods是一款开源、云原生的多云管理及混合云融合平台,能够帮助…

作者头像 李华
网站建设 2026/5/7 2:11:05

VFlow高性能流处理平台终极部署指南

项目快速概览 【免费下载链接】vflow 项目地址: https://gitcode.com/gh_mirrors/vfl/vflow VFlow是由EdgeCast开发的一款高性能、可扩展且可靠的开源流处理平台,专为IPFIX、sFlow和Netflow数据收集而设计。这个基于纯Golang构建的解决方案能够高效处理网络…

作者头像 李华
网站建设 2026/5/10 1:17:55

如何判断高低温交变湿热试验箱品牌的质量是否过硬?

在环境可靠性测试领域,高低温交变湿热试验箱是评估产品耐候性与稳定性的关键设备。选购一台质量过硬的试验箱,不仅关乎测试数据的准确性,更直接影响研发进度与产品质量。面对市场上众多的品牌,用户需从核心技术、制造工艺、长期稳…

作者头像 李华
网站建设 2026/5/8 3:04:10

编程竞赛备考:如何利用考级检验基础能力?

编程竞赛备考:如何利用考级检验基础能力? 学习层次划分 从专业角度看,青少年编程学习和考级大致可以划分为三个层次。 第一层:兴趣启蒙与基础认知帮助孩子在信息素养、图形化编程等环节建立计算思维,夯实基础概念,避免一开始就被抽象语法劝退。 第二层:系统进阶与能力…

作者头像 李华
网站建设 2026/5/9 7:12:20

LangChain RAG 学习笔记:从文档加载到问答服务

LangChain RAG 学习笔记:从文档加载到问答服务我在先前的随笔中分享过用Dify低代码平台来实现问答系统,也有几篇随笔是通过不同的方式来访问大模型。本篇将使用LangChain来做对应的实现。相关代码主要是通过Trae,它可以帮助你快速的了解了基本…

作者头像 李华
网站建设 2026/5/10 3:23:46

U-Mamba终极教程:从零开始掌握医学影像分割神器

U-Mamba是一个革命性的深度学习框架,专门为生物信息学和医学影像分析领域设计。它结合了稀疏状态模型(SSM)和卷积神经网络的优势,在3D医学影像分割任务中表现出卓越的性能。本教程将带你从零开始,完整掌握这个强大的开…

作者头像 李华