当前位置: 首页 > news >正文

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

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年10月24日*/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.关闭pagepage.close();//6.关闭browserbrowser.close();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.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年10月24日*/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.关闭pagepage.close();//6.关闭browserbrowser.close();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

4.3运行代码

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

image

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

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

5.小结

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

http://www.dtcms.com/a/523545.html

相关文章:

  • 电子商城网站建设与维护怎么建设淘客自己的网站_
  • 基于 Vue3 + WebSocket 实现的平板控制端与大屏展示端联动方案
  • 提高自己的网站网站 利润
  • 外贸seo软文发布平台上海百度推广优化排名
  • Qt 图像与定时器实战:实现动态图片轮播效果
  • C++ 模板初阶:从函数重载到泛型编程的优雅过渡
  • 第 01 天:Linux 是什么?内核、发行版及其生态系统
  • Docker 安装 MongoDB 完整指南:从入门到实战
  • Docker 离线安装
  • CUDA和cuDNN安装
  • 一篇初识什么是容器,引出 Docker
  • HTML 理论笔记
  • 《Linux系统编程之入门基础》【权限管理】
  • ELK(Elasticsearch + Logstash + Kibana + Filebeat)采集方案
  • 网站建设金手指排名霸屏主机类型wordpress
  • uniapp微信小程序简单表格展示
  • 【html】每日打卡页面
  • Server 15 ,VMware ESXi 实战指南:Ubuntu 20.04.6 版本虚拟机静态 IP 配置、分辨率固定及远程访问实践
  • 吴恩达深度学习课程一:神经网络和深度学习 第三周:浅层神经网络(三)
  • Copilot使用体验
  • uniapp video 加载完成后全屏播放
  • 从MongoDB到国产数据库:一场2TB电子证照系统的“平滑着陆”实践
  • 电子商务网站开发与建设试卷wordpress如何删除已安装主题
  • 内蒙古城乡建设网站免费详情页模板网站
  • Android EDLA开发认证说明和开发流程
  • DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(三)
  • UniApp缓存系统详解
  • 【LLM】用 FastAPI 搭建「OpenAI 兼容」DeepSeek-OCR 服务 + 简洁WebUI
  • 企业内部SRE/DevOps向精通Linux课程培训大纲
  • 《Effective Java》第13条:谨慎的覆盖clone