关闭

selenium之 时间日期控件的处理

标签: seleniumPython日期控件时间控件
5812人阅读 评论(14) 收藏 举报
分类:

更多关于python selenium的文章,请关注我的专栏:Python Selenium自动化测试详解


很多人问时间日期的空间怎么处理,但是时间日期控件各种各样,你可能遇到正常点的像这样:
正常点的

当然也可能遇到难点的,像这样:
困难的

当然,也不排除会遇到变态的,像这样:
变态的

呵呵,真要一个个想着怎么去选择,简直是非人类干的事!

那么该怎么办?

其实很简单,我们不去搞时间日期空间,我们把它当成一个普通的input框处理就好了!

但是,很多此类型input框都是禁止手动输入的,怎么办?

很简单,用js把禁止输入的readonly属性干掉就好了。

来吧,看一下示例:

示例网址:http://www.sucaijiayuan.com/api/demo.php?url=/demo/20141108-1/

代码:

# -*- coding: utf-8 -*-

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
driver.get('http://www.sucaijiayuan.com/api/demo.php?url=/demo/20141108-1/')

driver.switch_to.frame('iframe')

# 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)

driver.execute_script(js)

driver.find_element_by_id('txtBeginDate').send_keys('2016-08-24')
sleep(2)
print driver.find_element_by_id('txtBeginDate').get_attribute('value')

driver.quit()

结果:

2016-08-24

看,我一下子给了你四种写法。当然你去选也没有问题,就是一堆div、ul、li,但是我想说对于日期时间控件,认真你就输了,绕过去才是真理,就像验证码一样,这个东西去深究,一点意义也没有嘛,所以这里就不推荐也不写这种方法的示例了。

当然,这里还得说一下,有人说他遇到的日期时间框没有id、name,这里提醒一下,这就是普通的input框,定位方法太多了,class、tag name、xpath、css,总有一种适合你。同时友情提醒一下:注意时刻提防iframe!

有什么问题或者遇到什么特殊的控件无法这样处理,可以通过评论告诉我!

4
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:251958次
    • 积分:3201
    • 等级:
    • 排名:第10700名
    • 原创:89篇
    • 转载:2篇
    • 译文:3篇
    • 评论:127条
    我的GitHub博客以及QQ群
    现承接web自动化私活,也可做中小企业自动化培训。有意可加本人QQ:396214358


    Py+Se群:   Python Selenium交流群
    博客专栏
    最新评论