我正在尝试更改输入标签元素的值。
以下是标签:<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并未显示此更改;此外,当我继续前进并进一步点击提交按钮时,使用的是旧值,因为如果使用了新值,我没有得到应该加载的页面。
答案 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”)