一、问题
在使用selenium获取网页数据时,对于有些时间控件可以直接输入数据,但是有些只能手动点选,这样使用selenium去定位元素点选就显得较为繁琐,那么是否有简便的方式进行直接让程序输入日期呢,答案是肯定的。我们在时间控件上右键点击审查元素时会发现,该标签元素中会有readonly属性,比如下面
<input id="train_date" class="inp-txt" type="text" value="" name="leftTicketDTO.train_date"
autocomplete="off" maxlength="10" readonly="readonly">
标签中元素的属性是readonly,输入框是无法直接输入的,这时候需要先去掉元素的readonly属性,然后才能让程序自动输入。
二、实现代码
- 需要我们在input标签上点击右键,然后copy----Copy JS path
- 例如:复制到的元素为 document.getElementById(“train_date”)
- 然后在这个基础上添加方法removeAttribute(“readonly”)
- 最后代码如下:
js = 'document.getElementById("train_date").removeAttribute("readonly");'
driver.execute_script(js)
这样就去掉元素的readonly属性,然后可以使用以下代码将日期自动写入了。
driver.find_element_by_xpath("元素").clear()
driver.find_element_by_xpath("元素").send_keys("2021-6-5")