Selenium 调用 JavaScript 操作带有 readonly 属性 的日期控件

'''
<input class="index_start" readonly="" placeholder="开始日期" size="12" autocomplete="off" type="text" value="">
<input class="index_end" readonly="" placeholder="结束日期" size="12" autocomplete="off" type="text" value="">
'''
# 第一种方法
starttime = '2024/08/01'
endtime = '2024/09/05'

js = f'''
var s_ele = arguments[0];
var e_ele = arguments[1];
s_ele.readonly = false;
s_ele.value = "{starttime}";
e_ele.readonly = false;
e_ele.value = "{endtime}";
return [s_ele.value, e_ele.value]
'''

# 开始日期
start_date = driver.find_element_by_class_name('index_start')
end_date = driver.find_element_by_class_name('index_end')
start_date.click()

res = driver.execute_script(js, start_date, end_date)
print(js)
print(res)
time.sleep(5)

# 第二种方法
start_time = '2024/09/04'
js = f'document.getElementsByClassName("index_start")[0].value="{start_time}"'
driver.execute_script(js)
time.sleep(5)
'''
参考:

Document 对象属性和方法
https://www.runoob.com/jsref/dom-obj-document.html

document.getElementsByClassName()  返回文档中所有指定类名的元素集合,作为 NodeList 对象。
document.getElementById()  返回对拥有指定 id 的第一个对象的引用。
document.getElementsByName()   返回带有指定名称的对象集合。
document.getElementsByTagName()    返回带有指定标签名的对象集合。
document.images    返回对文档中所有 Image 对象引用。

selenium 执行 js 代码的两个方法你都会用吗?
http://testingpai.com/article/1595507301629
解决Selenium使用日期控件无法直接input日期问题的方法
https://blog.csdn.net/qq_41694638/article/details/136326791
selenium之 时间日期控件的处理
https://blog.csdn.net/huilan_same/article/details/52385401
【Python网络爬虫】selenium操作之readonly日期控件的处理方式
https://blog.csdn.net/qq_31180631/article/details/138303035
selenium对元素进行操作(三):日期控件处理
https://blog.csdn.net/Bierante/article/details/119203168
'''
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值