Selenium自动化测试(七)之js处理日期控件

Selenium自动化测试(八)之js处理控件操作

像上面这种使用了日期控件,并且输入框是设置的只读,在做自动化的时候,对于这种我们该如何去做呢?

1、模拟人工点开控件选择日期(不建议使用)

2、跳过该控件,直接输入日期

显然上面两种方式,第一种是相当麻烦不实用的,第二种则是很简便,下面我们来看下如何跳过日期控件:

一、在谷歌浏览器“开发者工具中”的可控制台Console操作处理日期控件

查看元素属性(通过xpath进行的元素定位)

bdata = document.evaluate("//label[contains(text(),'出生日期')]//following::input[1]", document).iterateNext()

删除元素只读属性,使得输入框正常输入内容

bdata.removeAttribute("readonly")

不更改属性值,使用value给输入框赋值

bdata.value="2020-10-23"

直接添加一个value属性

bdata.setAttribute('value','2020-05-01')

二、在Python中处理日期控件

删除元素属性值,添加value值

js = """var bm = document.evaluate(\"//label[contains(text(),'出生日期')]//following::input[1]\", document).iterateNext();
    bm.removeAttribute(\"readonly\");
    bm.value=\"2020-05-01\""""
driver.execute_script(js)

直接添加输入内容

js = """var bm = document.evaluate(\"//label[contains(text(),'出生日期')]//following::input[1]\", document).iterateNext();
    bm.value=\"2020-05-01\""""
driver.execute_script(js)

直接添加一个value属性

js = """var bm = document.evaluate(\"//label[contains(text(),'出生日期')]//following::input[1]\", document).iterateNext();
    bm.setAttribute('value','2020-05-01')"""
driver.execute_script(js)

我的这个元素定位使用的是XPATH(因为没有id/class/name这些简单的,不然我也不会用这么复杂的),当然,你可以选择id/class/name等进行元素定位(如果有的话)。

这种方法不仅适用于日期控件,还可以适用于所有只读的输入框和别的控件。

posted @ 2020-04-24 09:29  DesireYang  阅读(1240)  评论(0编辑  收藏  举报