selenium中时间控件

自动化过程中,有一些时间控件只能选择时间,并不能直接填写时间,用常规方法就是继续定位,但是这种方法很繁琐。可以尝试通过js来操作日期控件。

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
# author: Frank  time:2020/8/5


import time
from selenium import webdriver

# 以途牛订机票为例子
dr = webdriver.Chrome()
url = 'https://flight.tuniu.com/'
dr.get(url)

dr.maximize_window()

time.sleep(2)
js = "$('input[id=J_FormDepartDate]').removeAttr('readonly')"
js2 = "$('input[id=J_FormDestDate]').removeAttr('readonly')"

#下面的方法不行,还没研究
#js = "$('input:eq(0)').removeAttr('readonly')"
dr.execute_script(js)
dr.execute_script(js2)

time.sleep(3)
# 更换出发时间
fff = dr.find_element_by_xpath('/html/body/div[2]/div[2]/div/div[2]/div[2]/div[2]/div[2]/div[2]/div/input')
fff.clear()
fff.send_keys('2020-11-13')
#fff.click()
#time.sleep(5)

#选择目的地
dest = dr.find_element_by_xpath('/html/body/div[2]/div[2]/div/div[2]/div[2]/div[4]/div[1]/div[2]/div/input').send_keys('广州')

# 更换返回时间
ggg = dr.find_element_by_xpath('/html/body/div[2]/div[2]/div/div[2]/div[2]/div[4]/div[2]/div[2]/div/input')
ggg.clear()
ggg.send_keys('2020-11-15')
#ggg.click()

#点击确定
dr.find_element_by_xpath('/html/body/div[2]/div[2]/div/div[2]/div[2]/div[8]/a').click()


time.sleep(5)
dr.quit()

其中js的修改方法还有如下几种,后续研究:

js = "document.getElementById('txtBeginDate').removeAttribute('readonly')"   1.原生js,移除属性
js = "$('input[id=txtBeginDate]').removeAttr('readonly')"   2.jQuery,移除属性
js = "$('input[id=txtBeginDate]').attr('readonly',false)"   3.jQuery,设置为false
js = "$('input[id=txtBeginDate]').attr('readonly','')"   4.jQuery,设置为空(同3)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值