Selenium Python解决时间控件输入问题:移除readonly属性与赋值技巧

山间有风
山间有风
发布时间:2026-10-14| 5人浏览过
原创

本文针对Selenium Python自动化测试中时间控件无法直接输入的问题,分析了存在与不存在readonly属性的两种情况。通过JavaScript移除readonly属性后,结合clear()清空与直接赋值value的方法,解决了input元素不可编辑导致的报错,提供了经过测试的完整封装流程。

Selenium时间控件输入问题分析

在处理时间选择器时,常见的解决方案主要分为两类:

第一类是控件带有readonly属性的情况;

第二类是不带readonly属性的情况。

对于不带readonly属性的控件,通常可以直接使用send_keys()进行赋值操作。

在本次测试用例中,遇到的正是没有readonly属性的场景。

同时,由于无法定位到弹出的日期选择窗口(查阅资料可知,直接给时间控件的input属性赋值是最快捷的方式),因此尝试直接赋值。

起初按照第二种情况处理,但脚本一直运行失败,在赋值环节频繁报错。经过反复排查,确认不存在iFrame嵌套,句柄一致,且时间控件确为input类型并具备可编辑属性,但依然报错。

判断控件是否可编辑的指令如下:

flag=timeInput.is_enabled() print("时间控件是否可编辑: "+str(flag))

运行结果如下:

随后尝试采用第一种情况(即处理有readonly属性)的方法,但由于参考资料中的赋值语句存在瑕疵(可能不适用于当前用例),且未意识到语句本身的问题,导致最终仍卡在赋值步骤。幸运的是,在其他地方找到了正确的赋值语句,修改后问题得以解决。

移除readonly属性并赋值的完整步骤

具体分解步骤如下:

第一步:修改readonly属性

以下四种方法任选一种即可:

js = "document.getElementById('dateRange_w3').removeAttribute('readonly')" # 1.原生js,移除属性 #js = "$('input[id=dateRange_w3]').removeAttr('readonly')" # 2.jQuery,移除属性 #js = "$('input[id=dateRange_w3]').attr('readonly',false)" # 3.jQuery,设置为false #js="$(input[id=dateRange_w3]).attr('readonly','')"

第二步:执行JavaScript脚本

driver.execute_script(js)

第三步:清空时间输入框内容,调用clear()方法

第四步:进行赋值操作

jsValue= 'document.getElementById("dateRange_w3").value="2018-11-12 至 2018-11-13"'[/code][code]driver.execute_script(jsValue)

完整流程如下(已测试通过,为方便调用,部分逻辑已封装):

从运行结果可以看出,时间已成功正常输入。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。