zoukankan      html  css  js  c++  java
  • selenium中日期控件的操作方法

    高等信息填写页面,有三个时间控件,分别是出生日期、入学日期和毕业日期对应的前端代码分别是:

     

     

    通过在网上查询知道,针对时间控件有readonly属性的主要有两种操作方法:

    • 一种是直接对value赋值
    • 另一种是删除readonly属性,然后再通过send_key()方法输入时间。

    出生日期的输入通过第二种方法删除readonly,然后在输入时间,运行时直接通过。代码如下:

    jscsrq='document.getElementByID("csrq").removeAttribute("readonly")'
    driver.execute_script(jscsrq)
    driver.find_element_by_id("csrq").send_keys("1987-03-04")
    ActionChains(driver).move_by_offset(0,0).click().perform()
    #getElementByID()是js中的一种定位方式,返回对拥有指定ID的第一个对象的引用
    #removeAttribute()删除指定的属性

    但是在在操作入学日期时,一直提示readonly for null,换了其他的定位方法,都无法通过,最后才发现是定位方法使用错误。因为入学日期没有id,只有name所有当时复制代码后没有getElementByID方法,导致定位失败,无法找到readonly属性。

    然后将getElementByID修改成getElementsByName方法,运行结果又报错。经过查询得知getElementsByName返回的是一个元素数组,解决方法就是在后边加上索引[0],定位到第一个对象。最终的方法就是:

    jsrxrq='document.getElementsByName("rxrq")[0].removeAttribute("readonly")'
    driver.execute_script(jsrxrq)
    driver.find_element_by_name("rxrq").send_keys("2010-09")
    ActionChains(driver).move_by_offset(0,0).click().perform()

    直接对value赋值的方法,其实也挺简单。依旧是通过js定位到日期控件,然后直接对value赋值即可。

    jscsrq='document.getElementById("csrq").value="1987-03-04"'

    通知此次学习过程遇到的问题,得到的经验就是:代码运行过程中不要怕出错,但是一定要够认真。

  • 相关阅读:
    JavaWeb(一)
    有趣的天平秤假币问题
    栈应用——逆波兰式表达式的值
    栈应用——最长括号匹配
    倾力总结40条常见的移动端Web页面问题解决方案
    Emmet:HTML/CSS代码快速编写神器
    我的 Github 个人博客是怎样炼成的
    解决mac下atom安装插件失败问题
    Github建站全攻略
    OS X快捷键最最齐全版(官方版)
  • 原文地址:https://www.cnblogs.com/sunjump/p/14722476.html
Copyright © 2011-2022 走看看