python时间控件readonly属性_13-js处理日历控件(修改readonly属性)
[TOC]
**前言**
日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题。
基本思路:先用js去掉readonly属性,然后直接输入日期文本内容
## 一、日历控件
1. 打开12306的车票查询界面,在出发日期输入框无法直接输入时间
2. 常规思路是点开日历控件弹出框,从日历控件上点日期,这样操作比较烦躁,并且我们测试的重点不在日历控件上,只是想输入个时间,做下一步的操作
3. Chrome用F12查看输入框的属性:readonly="readonly",如下:
```
```
![Snipaste_2020-08-17_16-55-09.png](https://i.loli.net/2020/08/17/jGs1AKiYNoVtwUy.png)
## 二、去掉readonly属性
1. 很明显这种元素的属性是readonly,输入框是无法直接输入的,这时候需要先去掉元素的readonly属性,然后就可以输入啦。
2. 点击F12的“编辑按钮”,找到对应元素,直接删除readonly="readonly",然后回车。
3. 在页面出发日位置输入:yoyoketang 试试,嘿嘿,发现可以输入成功。当然这里只是为了验证可以输入内容,测试时候还是输入测试的日期。
![Snipaste_2020-08-17_16-57-22.png](https://i.loli.net/2020/08/17/IAZHqyOmpRxvk7d.png)
## 三、用js去掉readonly属性
1. 用js去掉元素属性基本思路:先定位到元素,然后用removeAttribute("readonly")方法删除属性。
2. 出发日元素id为:train\_date,对应js代码为:'document.getElementById("train\_date").removeAttribute("readonly");'
```
# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.12306.cn/index/")
# 去掉元素的readonly属性
js = 'document.getElementById("train_date").removeAttribute("readonly")'
driver.execute_script(js)
```
## 四、输入日期
1. 输入日期前,一定要先清空文本,要不然无法输入成功的。
2. 这里输入日期后,会自动弹出日历控件,随便点下其它位置就好了,接下来会用js方法传入日期,就不会弹啦!
```
# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.12306.cn/index/")
# 去掉元素的readonly属性
js = 'document.getElementById("train_date").removeAttribute("readonly")'
driver.execute_script(js)
# 清空文本后输入值
driver.find_element_by_id("train_date").clear()
driver.find_element_by_id("train_date").send_keys("2020-10-01")
```
## 五、js方法输入日期
1. 这里也可以用js方法输入日期,其实很简单,直接改掉输入框元素的value值就可以啦
```
# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.12306.cn/index/")
# 去掉元素的readonly属性
js = 'document.getElementById("train_date").removeAttribute("readonly")'
driver.execute_script(js)
# 用js方法输入日期
js_value = 'document.getElementById("train_date").value="2020-10-01"'
driver.execute_script(js_value)
```
## 六、参考代码如下:
```
# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.12306.cn/index/")
# 去掉元素的readonly属性
js = 'document.getElementById("train_date").removeAttribute("readonly")'
driver.execute_script(js)
# 用js方法输入日期
js_value = 'document.getElementById("train_date").value="2020-10-01"'
driver.execute_script(js_value)
# 清空文本后输入值
driver.find_element_by_id("train_date").clear()
driver.find_element_by_id("train_date").send_keys("2020-10-01")
```
python时间控件readonly属性_13-js处理日历控件(修改readonly属性)相关推荐
- 【基于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 ...
- python时间控件readonly属性_Selenium2+python自动化----js处理日历控件(修改readonly属性)...
前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...
- python时间控件readonly属性_人生苦短,我学python之python+selenium js处理日历控件(修改readonly属性)...
转载于 上海-悠悠的博客 前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性 ...
- Python+selenium自动化-js处理日历控件(修改readonly属性)
前言 今天写自动化脚本的时候遇到一个需要更改日期的控件,不想费劲巴拉的去找日历的定位,但是又没办法直接输入我想输的日期时间,想了会儿之后决定用js解决日历控件 基本思路:先用js去掉readonly属 ...
- 艺赛旗(RPA)selenium 利用 js 处理日历控件
艺赛旗 RPA8.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 详细内容请参看艺赛旗官网支持栏目:RPA社区 点击链接 ...
- html 控件坐标定位,利用JS改变html控件位置
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 利用JS改变html控件位置 我想写一个贪吃蛇小游戏,所以需要完成蛇的自动移动效果,这就需要改变html控件位置.本来我 ...
- 初见物理引擎库Cannon.js:使用dat.gui修改物体属性
0 前言 本文是"初见物理引擎库Cannon.js"系列的第二篇文章,在本文中主要讲解dat.gui的使用. 1 dat.gui简介 熟悉Three.js的读者肯定对dat.gui ...
- Selenium2+python自动化25-js处理日历控件(修改readonly属性)
前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...
- pythongui日历控件_Selenium2+python自动化25-js处理日历控件(修改readonly属性)
前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...
最新文章
- 深入理解计算机系统:网络编程 下 一个简单的web服务器
- Java8 ConcurrentHashMap详解
- 二叉树展开为链表Python解法
- php滴滴平台接口,图片服务API文档
- 第四章、epub文件处理 -- epub文件内部组成
- 怎么设计接口测试用例更好——百度大佬“教你写用例”
- 知乎万赞:熬夜整理出的软件测试面试题大全(2021最新)
- 高通modem启动过程_「msm8953」高通8953启动流程 - seo实验室
- CharField:Django文档——Model字段选项(Field Options)
- [资料分享] 干货~WLAN从入门到精通系列-WLAN技术连载帖汇
- QTableView如何设置表头宽度
- 我的七个建议 作者:Joel Spolsky
- 2022 版史上最全 Java 八股文,没有任何异议
- 字库芯片学习之汉字内码
- jQuery - 获取兄弟元素
- UMR与欧尼酱 区间相加问题
- Axure RP快捷键指令汇总
- hadoop只显示一个DataNode
- Linux下通过dpkg生成.dep安装包
- 人月神话(3)外科手术队伍
热门文章
- Linux API-进程:getpid、getppid、exit、wait、fork、vfork、execl、execv、system、popen
- 第十一章 C++ 封装/继承/多态
- Ubuntu20静态IP配置
- Kooboo 完全介绍一:概念介绍
- 【C++】黑马程序员 C++学习课程—C++核心编程
- 时间序列的7种预测模型
- PageHelper中的RowBounds
- 完美走位【华为OD机试 2023 Q1考试题 A卷】
- 如何快速把一个11g数据库插入到12c cdb中去?
- ubuntu 20.04 SystemTap安装