selenium之 时间日期控件的处理

原创 2016年08月31日 15:13:59

更多关于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!

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

版权声明:本文为博主原创文章,转载请声明出处并添加原文链接。

Selenium webdriver操作日历控件

一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法 日期控件是readonly的 方案一:使用JS rem...
  • heart_1014
  • heart_1014
  • 2016年07月26日 14:14
  • 1133

selenium 操作日期控件

日期控件大都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法  比如: 但是,有的日...
  • linxi9322
  • linxi9322
  • 2017年12月13日 15:49
  • 132

selenium 时间日期控件的处理

今天在写自动化测试脚本的时候,出现了一个时间选项框,类似于这样: 这可难倒我了,难道要我去研究怎么去控制时间吗?额~~~估计很难。 网上查了一下,还真是有些人也遇到了这个问题。当然也可能遇到难点的...
  • MTbaby
  • MTbaby
  • 2017年07月04日 15:01
  • 623

22、Selenium + Python 实现 UI 自动化测试-操作日期时间控件

其实做自动化会遇到很多坑,有的坑需要我们填掉,有的坑需要我们绕过去。而日期时间控件就是需要我们绕过去的控件,千万别想着如何点击形形色色的日期控件。 一、先来看看日期时间控件的前端形式 ...
  • duzilonglove
  • duzilonglove
  • 2017年10月16日 10:15
  • 244

selenium操作日历控件(java版本)

问题:        在应用selenium实现web自动化时,经常会遇到处理日历控件点击问题,手工去一个个点击日历控件从而选择需要的日期,但自动化执行过程中,无法完全复制手工这样的操作。 思路:...
  • u010503127
  • u010503127
  • 2015年12月22日 15:17
  • 1971

Selenium自动化测试框架对于日期控件的封装

主要是基于TestNG和Selenium自动化测试框架实现对日期控件的封装,完成自动化测试。...
  • u013512332
  • u013512332
  • 2016年07月12日 21:48
  • 1183

请教:日期选择框,selenium如何定位页面元素

日期选择框,selenium如何定位页面元素
  • wjok2009
  • wjok2009
  • 2014年12月24日 16:20
  • 3147

Selenium webdriver操作日历控件

一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期,   1. 定位到该input   2. 使用sendKeys 方法   比如:   但是,有的日期控件...
  • wanglha
  • wanglha
  • 2015年03月25日 13:39
  • 1389

Java+Selenium3方法篇48-如何获取日期和时间

自动化测试也需要用到时间嘛?       当然,最常见的场景就是在开发自动化测试框架里,日志文件和图片保存。图片保存还可以用当前case的方法名,日志文件一般采用当前系统时间命名,前面截图文章,我们...
  • u011541946
  • u011541946
  • 2017年07月12日 22:43
  • 889

Python语言编写脚本时,对日期控件的处理方式

对日期控件,日期控件的输入控一般是不能手动输入的;把readonly属性去掉就好 其实很简单,我们不去搞时间日期空间,我们把它当成一个普通的input框处理就好了! 但是,很多...
  • huoyanyan2015
  • huoyanyan2015
  • 2017年02月13日 14:58
  • 344
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:selenium之 时间日期控件的处理
举报原因:
原因补充:

(最多只允许输入30个字)