转载于

上海-悠悠的博客

前言

日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题。

基本思路:先用js去掉readonly属性,然后直接输入日期文本内容

一、日历控件

1.打开12306的车票查询界面,在出发日期输入框无法直接输入时间

2.常规思路是点开日历控件弹出框,从日历控件上点日期,这样操作比较烦躁,并且我们测试的重点不在日历控件上,只是想输入个时间,做下一步的操作

3.用firebug查看输入框的属性:readonly="readonly",如下:

二、去掉readonly属性

1.很明显这种元素的属性是readonly,输入框是无法直接输入的,这时候需要先去掉元素的readonly属性,然后就可以输入啦。

2.点左下角firebug的“编辑按钮”,找到对应元素,直接删除readonly="readonly",然后回车。

3.在页面出发日位置输入:yoyoketang 试试,嘿嘿,有没发现可以输入成功。当然这里只是为了验证可以输入内容,测试时候还是输入测试的日期。

三、用js去掉readonly属性

1.用js去掉元素属性基本思路:先定位到元素,然后用removeAttribute("readonly")方法删除属性。

2.出发日元素id为:train_date,对应js代码为:'document.getElementById("train_date").removeAttribute("readonly");'

四、输入日期

1.输入日期前,一定要先清空文本,要不然无法输入成功的。

2.这里输入日期后,会自动弹出日历控件,随便点下其它位置就好了,接下来会用js方法传入日期,就不会弹啦!

五、js方法输入日期

1.这里也可以用js方法输入日期,其实很简单,直接改掉输入框元素的value值就可以啦

六、参考代码如下:

# coding:utf-8

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("https://kyfw.12306.cn/otn/index/init")

# 去掉元素的readonly属性

js = 'document.getElementById("train_date").removeAttribute("readonly");'

driver.execute_script(js)

# 用js方法输入日期

js_value = 'document.getElementById("train_date").value="2016-12-25"'

driver.execute_script(js_value)

# # 清空文本后输入值

# driver.find_element_by_id("train_date").clear()

# driver.find_element_by_id("train_date").send_keys("2016-12-25")

python时间控件readonly属性_人生苦短,我学python之python+selenium js处理日历控件(修改readonly属性)...相关推荐

  1. python删除文件夹无法访问_人生苦短 我学Python——anaconda和Jupyter notebook安装使用...

    一.人生苦短 我学Python 为什么学习Python? 1.应用范围广 很多网站是用Python开发的,比如豆瓣,还有YouTube等等. 2.效率高,和其他编程语言对比,可以用少得多的代码写出相同 ...

  2. python编程需要安装什么软件_[零基础学pythyon]安装python编程环境

    注:推荐一种非常重要的学习方法 在我这里看文章的零基础朋友,乃至于非零基础的朋友,不要希望在这里学到很多高深的python语言技巧. "靠,那看你胡扯吗?" 非也.重要的是学会一些 ...

  3. Python+selenium自动化-js处理日历控件(修改readonly属性)

    前言 今天写自动化脚本的时候遇到一个需要更改日期的控件,不想费劲巴拉的去找日历的定位,但是又没办法直接输入我想输的日期时间,想了会儿之后决定用js解决日历控件 基本思路:先用js去掉readonly属 ...

  4. 【基于python实现UI自动化】3.4 JS 处理日历控件(删除 readonly 属性)

    python-UI自动化 1.0 selenium工具介绍 2.0 selenium环境搭建 3.0 selenium常见8大元素定位 3.1 selenium通过By定位元素 3.2 seleniu ...

  5. python时间控件readonly属性_Selenium2+python自动化----js处理日历控件(修改readonly属性)...

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  6. python创建类统计属性_轻松创建统计数据的Python包

    python创建类统计属性 介绍 (Introduction) Sometimes you may need a distribution figure for your slide or class ...

  7. python完全支持面向对象编程思想_面向对象的编程思想和Python的类,访问和属性,继承...

    本文将从访问限制,属性,继承,方法重写这几个方面继续介绍面向对象的编程思想和Python类的继承. 复制代码 一.访问权限: Python中在类的内部定义属性和方法,在类的外部是可以直接调用或进行访问 ...

  8. c#控件弹幕效果_仿B站弹幕,极简Android开源弹幕控件:EasyDanmaku

    EasyDanmaku 一个方便简单的Android弹幕控件,顾名思义so easy. easydanmaku easydanmaku 原理简单,纯java实现,方便修改和扩展: 体积小,占用资源少, ...

  9. python在房地产中的应用_“人生苦短,我学 Python”丨爆火的Python语言应用领域主要有哪些?...

    原标题:"人生苦短,我学 Python"丨爆火的Python语言应用领域主要有哪些? 「人生苦短,我学 Python」是众多和计算机科学有些接触的同学耳熟能详的段子,不过最近这一风 ...

最新文章

  1. 【Linux】类Unix 操作系统进程监控控制工具 Supervisor
  2. Android百度地图scode,“androidsdk | 百度地图API SDK
  3. PAT甲级1028 List Sorting:[C++题解]排序,cin和cout会超时
  4. 9切换中文mac_超详细的Mac重装系统教程!让重装系统变得简单起来!
  5. 【读书笔记0101】Beginning linux programming-3rd
  6. IIS安装2个SSL_SSL的申请与https使用
  7. Oracle绑定变量分级(Bind Graduation)
  8. 传输层协议(9):滑动窗口(3)——会呼吸的痛
  9. 云打印SDK来袭,支持飞鹅云,芯烨云,易联云,优声云等云打印机
  10. To prevent a memory leak the JDBC Driver has been forcibly
  11. pycharm ssh interpreter 搭建
  12. 应用MIME将ZPT内容输出为excel文件(word文件)
  13. 成长计划校园极客秀|基于OpenHarmony的智能阳台
  14. 再见 xxl-job!更强大的新一代分布式任务调度框架来了
  15. 2020.10.7--PS--填充图层、调整图层、调整图层与剪贴蒙版
  16. 生物信息学(高通量测序)名词
  17. 犹抱琵琶半遮面 三星手机S8将于月底发布
  18. matlab怎么求一个三元一次方程组的解,关于一个三元一次方程的问题(matlab和excel)...
  19. Jetpack系列之CameraX 相机
  20. 一文读懂 储能变流器PCS与虚拟同步机VSG的区别

热门文章

  1. Java 随机数生成
  2. 《悟空传》——绝望中放弃,觉醒中重生!
  3. C语言学习19:操作符详解
  4. MATLAB--数字图像处理 均值滤波
  5. 2023 MacBook Pro 与2021 Macbook Pro有哪些差别
  6. ubuntu/vim/terminal/gedit...快捷键
  7. IQA图像质量评价常用评价指标
  8. 在博图V13中创建s7-300项目并仿真
  9. NBA名人堂之-查尔斯·巴克利|里克·巴里|罗伯特·帕里什|斯科蒂·皮蓬|戴夫·德布斯切尔
  10. #萌新日志#2. 使用BraTS 2020数据集训练nnUNet(多模态和单模态)