zoukankan      html  css  js  c++  java
  • 时间日期控件的处理-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!

  • 相关阅读:
    Hibernate4学习day0--hibernate封装--注解--单元测试
    Hibernate4学习day01--简介--基本配置
    java基础day13---引用数据类型
    java基础day14---static关键字-----继承
    java基础day12---this 关键字-----参数传递
    day05 Struts2文件上传和下载---防重复提交
    java基础day11---空指针异常----引用类型--自定义类型赋值--封装
    java基础的第二轮快速学习!day10
    Struts2,大爷你好!第四天
    java基础的第二轮快速学习!day09
  • 原文地址:https://www.cnblogs.com/fighter007/p/8433023.html
Copyright © 2011-2022 走看看