前言
今天写自动化脚本的时候遇到一个需要更改日期的控件,不想费劲巴拉的去找日历的定位,但是又没办法直接输入我想输的日期时间,想了会儿之后决定用js解决日历控件
基本思路:先用js去掉readonly属性,然后直接输入日期文本内容
案例
1.很明显这种元素的属性是readonly,输入框是无法直接输入的
2.F12找到日历框控件对应的元素,找到readonly属性,双击删除,回车
3.回到页面,点击日历框随意输入字符,测试成功
代码
当然,我这个只是随手写的一个大概的运行例子,具体的要根据你自己的实际情况来变动一下
from selenium import webdriver
def test():
driver = webdriver.Chrome()
driver.get(r"www.123.com")
# 首先根据id定位到日历输入框
js = 'document.getElementById("STARTTIME").removeAttribute("readonly");'
# 运行js代码
driver.execute_script(js)
start_time = self.driver.find_element_by_id('STARTTIME')
# 如果输入框内有默认的内容,需要先清空输入框
start_time.clear()
# 输入需要修改的时间
start_time.send_keys(‘2020-04-22’)
if __name__ == '__main__':
test()