【playwright】新一代自动化测试神器playwright+python系列课程41_playwright_日历时间控件处理

playwright_日历时间控件处理

系统中往往存在着需要设置时间的情况,基本都是使用时间控件来选择时间,为了保证时间格式的统一,在设置时间时是不允许手动输入的,只通过点击鼠标选择时间就可以了,这种操作在使用时没有问题,但是在写自动化测试脚本时问题就来了,就是如果安装手动操作选择时间的过程来写脚本,就会有很多次的元素定位,写起来会非常麻烦。但是我们分析后会发现,点击了那么多次鼠标,最终的结果就是把一个时间填到了时间的输入框中,那我们就可以想,在写脚本时能不能直接输入时间,避免多次的时间定位,提高脚本编写的速度以及将来执行的速度。但是时间控件的输入框是不允许输入的,我们脚本怎么能直接输入呢。
实际上元素能否输入是由readonly属性控制的,如下图的时间选择框:
在这里插入图片描述

这种情况下,只需要将readonly属性去除掉就可以输入时间了,怎么去除元素的属性呢,在playwright中,使用evaluate()执行js脚本就可以了。

实践代码:

'''
# author: 测试-老姜   交流微信/QQ:349940839
# 欢迎添加微信或QQ,加入学习群共同学习交流。
# QQ交流群号:877498247
# 西安的朋友欢迎当面交流。
'''

from playwright.sync_api import Playwright, sync_playwright, expect
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False, args=['--start-maximized'],slow_mo=1000) #默认无头模式,设置浏览器最大化
context = browser.new_context(no_viewport=True) # 创建上下文,相当浏览器于实例化,即打开浏览器
page = context.new_page() # 打开一个新标签页
page.goto("http://127.0.0.1:8080/oa/") # 打开网址
page.locator("input[name=\"loginId\"]").fill("sup")
page.locator("input[name=\"password\"]").fill("s1234567")
page.get_by_role("button", name="登录").click() #点击登录后会弹出提示信息框

page.locator('text="综合查询"').click()
frame = page.frame_locator('#iframe_main').frame_locator('[name="listframe"]')
frame.locator('[name="searchCondition"]').select_option('createTime')

date_input = frame.locator('[name="begDate"]') # 定位到时间输入框
date_input.evaluate('node => node.removeAttribute("readonly")') # 删除readonly属性
date_input.evaluate('node => node.value="2024-01-13"') # 执行js输入时间
# date_input.fill('2024-01-13') #使用fill输入时间

page.wait_for_timeout(10000)
context.close()
browser.close()
playwright.stop()
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值