【发布时间】:2021-03-11 20:27:34
【问题描述】:
几天来,我一直在努力寻找一种方法来使用 Selenium 和 Python 设置日期选择器的日期。 我发现有一个带有日期的隐藏元素,所以我尝试使用 javascript 执行器为该隐藏元素设置一个值。我尝试了不同的方法,脚本似乎执行得很好,但日期没有改变。
我的脚本如下所示:
#input date by using hidden date method 1
element = browser.find_element_by_xpath("/html[1]/body[1]/div[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[2]/td[1]/table[1]/tbody[1]/tr[1]/td[2]/input[1]")
browser.execute_script("arguments[0].setAttribute('value', '{0}')".format("2019-10-31"), element )
element.submit()
和
#input date by using hidden date method 2
date = "2019-10-31"
element= browser.find_element_by_xpath("/html[1]/body[1]/div[1]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[2]/td[1]/table[1]/tbody[1]/tr[1]/td[2]/input[1]")
browser.execute_script('arguments[0].setAttribute("value", "%s")' % date, element)
element.submit()
网站的HTML代码和图片如下:
日期选择器的 HTML:
日期选择器元素:
编辑:
【问题讨论】:
-
我想说你要做的远非理想——它基本上是在修改测试中的隐藏/私有行为,这在任何类型的测试中通常都是一个坏主意。但是无论如何,要回答您的问题,您是否尝试过设置该值?那是表单发送的内容,而不是元素属性。 eg:
browser.execute_script('arguments[0].value = "%s"'...(至于为什么不应该,你可以自己看:你发现很难调试这个案例) -
@Official_Ali 是可以测试的公开网站吗?
-
@Christian 我尝试了您指出的代码,但没有任何改变。
browser.execute_script('arguments[0].value = "%s"' % date, element) -
@DebanjanB 不,不幸的是它不是:/
标签: javascript python selenium selenium-webdriver setattribute