Selenium(Python):如何在隐藏的输入上插入值?

我正在使用Selenium的WebDriver和Python编码。

有一个隐藏的输入字段,我试图在其中插入特定的日期值。该字段最初会产生一个日历,用户可以从中选择一个合适的日期,但是与直接插入合适的日期值相比,模拟起来似乎要复杂得多。

该页面的源代码如下所示:

<div class="dijitReset dijitInputField">

<input id="form_date_DateTextBox_0" class="dijitReset" type="text" autocomplete="off" dojoattachpoint="textbox,focusNode" tabindex="0" aria-required="true"/>

<input type="hidden" value="2013-11-26" sliceindex="0"/>

value="2013-11-26"我要在其中插入值的字段在哪里(它最初是空的,即:value=""

我了解WebDriver无法将值插入隐藏的输入中,因为常规用户无法在浏览器中执行此操作,但是一种解决方法是使用Javascript。不幸的是,这是我不熟悉的语言。有谁知道会行得通吗?

回答:

您可以使用WebDriver.execute_script。例如:

from selenium import webdriver

driver = webdriver.Firefox()

driver.get('http://jsfiddle.net/falsetru/mLGnB/show/')

elem = driver.find_element_by_css_selector('div.dijitReset>input[type=hidden]')

driver.execute_script('''

var elem = arguments[0];

var value = arguments[1];

elem.value = value;

''', elem, '2013-11-26')


from selenium import webdriver

driver = webdriver.Firefox()

driver.get('http://matrix.itasoftware.com/')

elem = driver.find_element_by_xpath(

'.//input[@id="ita_form_date_DateTextBox_0"]'

'/following-sibling::input[@type="hidden"]')

value = driver.execute_script('return arguments[0].value;', elem)

print("Before update, hidden input value = {}".format(value))

driver.execute_script('''

var elem = arguments[0];

var value = arguments[1];

elem.value = value;

''', elem, '2013-11-26')

value = driver.execute_script('return arguments[0].value;', elem)

print("After update, hidden input value = {}".format(value))

以上是 Selenium(Python):如何在隐藏的输入上插入值? 的全部内容, 来源链接: utcz.com/qa/404213.html

回到顶部