《刚刚问世》系列初窥篇-Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程)
1.简介
我们在实际工作或者生活中,有可能遇到有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据,例如:我们预定火车票或者预定酒店,需要选择发车日期或者酒店的入住与退房时间。宏哥早在之前的12306选出发站就简单的提到过,只不过是一带而过,今天就展开详细介绍一下。网页上日历控件一般,是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期。这一篇,宏哥就来介绍一下日历控件是如何用Playwright实现自动化。
2.JQueryUI网站
2.1被测网址
1.被测网址的地址:
https://jqueryui.com/resources/demos/checkboxradio/default.html
2.网页如下图:

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

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运行代码


4.方法二
第二种方法:一种笨办法,通过元素定位,采用编写的Java脚本模拟手工操作一样,将日期一步一步选择点击出来。
4.1代码设计
根据第二种思路进行代码设计如下图所示:

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运行代码


5.小结
日历控件的自动化测试操作今天就先介绍讲解到这里,比较简单易懂。希望对您有所帮助或者参考。好了,今天时间不早了,灰常感谢您耐心地阅读!!!
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角 “推荐” 按钮,您的
本文版权归作者和博客园共有,来源网址: https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
公众号(关注宏哥)                               微信群(扫码进群)                                       客服微信

浙公网安备 33010602011771号