selenium中日期控件的操作方法

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

 selenium中日期控件的操作方法

 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属性。

是一个元素数组,解决方法就是在后边加上索引[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"'

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