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"'

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

  • 相关阅读:
    防简单攻击iptables策略
    Iptables 防火墙常用配置
    9个常用iptables配置实例
    NFS服务的端口分配
    docker参数--restart=always的作用
    nginx的proxy_pass路径转发规则最后带/问题
    查看tomcat进程启动了多少个线程
    Tomcat 普通用户启动
    SSH远程执行脚本tomcat未启动
    mysql 前缀索引
  • 原文地址:https://www.cnblogs.com/sunjump/p/14722476.html
Copyright © 2011-2022 走看看