在Selenium Python

时间:2019-01-01 20:47:16

标签: python selenium input

我正在尝试更改输入标签元素的值。

以下是标签:<input type="hidden" id="hiRequestAccessType" data-bind="value: requestAccessTypeStr" value="2">

我想将值更改为“ 2,1”。

基于Set value of input instead of sendKeys() - selenium webdriver nodejs的讨论,我尝试使用execute_script,但值保持不变。

我尝试过:

passwordcheck_input_element = driver.find_element_by_xpath('//*[@id="hiRequestAccessType"]') . ###THIS DOESNT THROW ERRORS
new_value = "2,1"

driver.execute_script("arguments[0].value = arguments[1].toString()", passwordcheck_input_element, new_value)
# driver.execute_script("arguments[0].value = '" + new_value + "'", passwordcheck_input_element) . ###TRIED THIS IN LIEU OF ABOVE

对于任何一种选择,代码都可以运行,但是通过目测检查,其值保持不变。我还尝试了使用'setAttribute'而不是直接使用相同的结果(不变)的上述两种选择。

请注意,该网页是一种形式,单击该复选框可以根据需要将值更改为“ 2,1”。 (但是,如果我尝试找到复选框元素,则会收到消息,提示它不可单击,因此是此路由)。

现在,奇怪的是,我知道它在幕后做一些事情,因为我在execute_script调用之前和之后尝试查询value属性,并为后者正确打印了新值。但是,正如我所说,UI并未显示此更改;此外,当我继续前进并进一步点击提交按钮时,使用的是旧值,因为如果使用了新值,我没有得到应该加载的页面。

2 个答案:

答案 0 :(得分:0)

能否请您尝试下面的代码?

passwordcheck_input_element = driver.find_element_by_id("hiRequestAccessType")
driver.execute_script("arguments[0].value = '2,1';", passwordcheck_input_element) 

如果无法点击,您还可以通过JavaScript执行来控制复选框对象。

driver.execute_script("document.getElementById('hiRequestAccessType').checked = true;")

答案 1 :(得分:-1)

driver.find_element_by_xpath('// * [@ id =“ hiRequestAccessType”]')。setAttribute(“ value”,“ 1”)

可以选择xpath或css name元素,选择后可以使用.setAttribute函数更改其值。也可以使用getAttribute函数获取当前选定的元素值。对于模拟复选框,请单击:.setAttribute(“ checked”,“ checked”)