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

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

  • 相关阅读:
    批量kill 进程
    MySQL数据库多表查询和事务
    js方法执行中休眠几秒
    js中 .map()和.filter()以及他们的区别
    封装:elementui之confirm消息提示框、确认提示弹框
    配置Maven环境变量
    idea 缺失右侧maven窗口
    js中 判断数组 是否包含某元素 Array.indexOf("x")== 1
    idea 如何将项目改成maven项目 在pom.xml 文件上右键 Add as Maven Project
    C#的进化——C#发展史、C#1.010.0语法系统性梳理、C#与JAVA的对比 致敬作者
  • 原文地址:https://www.cnblogs.com/sunjump/p/14722476.html
Copyright © 2020-2023  润新知