​在使用selenium爬取数据时,有时会需要选择日期,来获取某个时间段的数据。网页上日历控件一般是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期。这篇就介绍用selenium如何实现自动化控制日历控件。

基本思路

方法一:可以模拟鼠标点击,拖动的方式。
方法二:使用js进行控制直接输入日期文本内容。

这里主要介绍第二种方法。因为大部分的日期控件,都可以把它当成一个普通的input框处理,进行输入操作。但是日历控件一般都会有一个readonly属性,让用户只能够通过鼠标选择,不能够输入。

因此,需要先将这一属性去掉,再通过js控制,在input框内直接输入日期,这样就可以达到控制日历控件的目的。其中,selenium有两种执行方法,一是执行js代码,二是通过send_keys 进行输入。

具体代码

from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get("https://www.12306.cn/index/")# 等待 首页 元素出现
element=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,'//li[@class="nav-item nav-item-w1 active"]/a')))# 处理开始时间
# js去掉readonly属性
js = 'document.getElementById("train_date").removeAttribute("readonly");'
driver.execute_script(js)# 第一种:使用js控制
js_value = "document.getElementById('train_date').value='{}'" .format("2018-05-20")
driver.execute_script(js_value)# 第二种:直接输入日期
#driver.find_element_by_id('train_date').clear()
#driver.find_element_by_id('train_date').send_keys('2018-05-20')time.sleep(5)
driver.close()

效果

可以看到,上面的日历控件的日期已经被修改了。
但是input标签的value值并没有改变,我猜测这个value值是一个初始化值,应该会在提交的时候,获取修改过后的值赋给另外一个变量。

如果你有不同的想法,或者知道正确的逻辑,欢迎在留言告诉我。

selenium控制日历控件相关推荐

  1. selenium操作日历控件

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

  2. python 日历控件_python selenium 处理时间日期控件(十六)

    测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现. 1.首先我们看一下如何通过层级定位来操作时间控件. 通过示例图可以看到,日期控件是无法输入日 ...

  3. python 自动化 在日历中选择时间-Python中Selenium选择日期(选择日历控件)的方法...

    1.日历控件中,年月日,一个一个的点击,灵活性太差,稳定性也差 通过检查元素,日历空间就是一个文本输入框,可以用send_keys 检查元素 2.发现标签中存在readonly属性,这是一个只读标签不 ...

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

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

  5. 艺赛旗(RPA)selenium 利用 js 处理日历控件

    艺赛旗 RPA8.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 详细内容请参看艺赛旗官网支持栏目:RPA社区 点击链接 ...

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

    转载于 上海-悠悠的博客 前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性 ...

  7. Selenium2+python自动化25-js处理日历控件(修改readonly属性)

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

  8. android组合控件的焦点,撸一个简单的TV版焦点控制的日历控件

    1.效果 最近需求要一个遥控控制的日历控件,找了半天没找到轮子,就自己撸一个,先看效果图: 效果图.gif 2.XML属性,所有属性默认为效果图 calender_textSize:星期和日期的字体大 ...

  9. ExtJs定制日历控件——定制部分解析

    日历控件中,我们自己需要写的就是每一个日期单元格中的部分,在日历控件部分代码的最后面,有三个for循环,用来控制上个月当前月和下个月日期,其中第二个循环是当前月(日历标题部分选择的月份)控制部分. 代 ...

最新文章

  1. Google Chrome(谷歌浏览器) 发布下载
  2. java反射 数组类,乐字节Java反射之三:方法、数组、类加载器和类的生命周期
  3. WF4.0进行单元测试
  4. 适合 Kubernetes 初学者的一些实战练习(一)
  5. 饿了么风神登录_海底捞首度登陆第三方外卖!联手饿了么全国配送“小火锅”...
  6. poj1189 简单dp
  7. 官方原版美化修改版完美适配双端海洋cms模板
  8. C#实现捕获当前屏幕截图(转)
  9. python函数装饰嵌套_python3--函数名本质,函数嵌套,闭包,装饰器
  10. 数学建模之统计回归模型详解
  11. 安装Wireshark时提示Npcap失败的解决办法(亲测且多人反馈有用)
  12. 关于 PoW 和 PoS
  13. 一文读懂keepalive的工作原理
  14. 化工集团公司数字化转型有力抓手“数字化示范项目建设
  15. 固定码率(CBR)与可变码率(VBR)
  16. html文件右键没有打开方式,一个文件打不开,点右键,怎么在打开方式中加入Word,Excel的打开方式,打开方式中有Word的打开方式?...
  17. 搭建一套简单的CDN网络
  18. BT 面板控制命令 宝塔 Linux 常用命令收集整理
  19. 生物统计学(biostatistics)学习笔记(四)统计推断(已知样本推总体)
  20. 2000-2020全国及31省城投债数据

热门文章

  1. 一文带你清楚知道项目经理都在干什么?
  2. 算法笔记(0002) - 【贪心算法】活动安排问题
  3. java实现时间轮定时器_c++ 时间轮定时器实现
  4. 公文专用计算机,[计算机]常用公文写作方法
  5. 修ITI.Transcendata.CADFIX.v11.SP1-ISO 1DVD
  6. 电脑WLAN连接异常:自上次连接后,某些信息已更改。我们还需要一些信息才能完成连接。
  7. C语言sum函数不接受一个参数,函数不接受2个参数怎么解决
  8. exchange 服务器设置自动答复,如何让EXCHANGE 2010用户邮箱自动回复每一封邮件。...
  9. 在线进销存软件免费版,哪个可以用?
  10. 计算机代码,名词解释和作用,还有我们要高高飞起来喔!