自动化处理日历控件

1、第一种较为简单的,直接文本输入即可;

2、第二种,不是输入框类型的,可以使用 select 组件,也可以用模拟按键,会发现输入年,月,日后会对应到该位置,直接回车便可选中。如下图所示:
自动化处理日历控件

3、把日历的时间空间看成输入框,f12 看下,若没有 readonly 属性,直接输入就可以了。

若存在,如下图所示:
自动化处理日历控件

处理思路:

 若readonly属性为空,可以直接输入,否则先用js去掉readonly属性,然后直接输入

代码如下:

from selenium import webdriver
from time import sleep

url = 'https://www.12306.cn/index/'
driver = webdriver.Chrome()
driver.get("url")

# 第一种
js = "document.getElementById('txtBeginDate').removeAttribute('readonly')"  # 原生js,移除属性
# # 第2种
# js = "$('input[id=txtBeginDate]').removeAttribute('readonly')"               # jquery,移除属性
# # 第3种
# js = "$('input[id=txtBeginDate]').attr('readonly',false)"                    # jquery,设置为false
# # 第4种
# js = "$('input[id=txtBeginDate]').attr('readonly','')"                       # jquery,设置为空
driver.execute_script(js)

driver.find_element_by_id('train_date').send_keys("2019-08-22")
sleep(2)
driver.quit()