2016-09-23 64 views
0

我想在selenium webdriver中获取用户输入的值,但是,webdriver正在从“value”属性返回文本。这是Selenium中的一个错误吗?我怎样才能得到用户实际输入的内容?如果Selenium中的属性值已经存在,如何获得输入值?

<input id="budget" name="budget" type="text" size="10" maxlength="10" class="exemplifiable" value="100" data-example="20.00"> 

测试代码

locator = 'budget' 
element = self.find_element_by_id(locator) 
element.send_keys('5') 
value = element.get_attribute('value') 
print(value)  
# prints 100 instead of 5 

回答

0

尝试执行JavaScript代码:

driver.execute_script("document.getElementById('id_value').value") 
0

这是硒的错误吗?

不,这不是错误,行为是绝对正确的。

实际上,您将从已找到的元素中获取属性值,而不是刷新元素,其中属性值已经与缓存中的旧值一起存储。这就是为什么你会获得先前的价值。

你应该send_keys()新值后再次找到相同的元素,然后你会发现你想要如下的实际结果: -

locator = 'budget' 
element = self.find_element_by_id(locator) 
element.send_keys('5') 
value = self.find_element_by_id(locator).get_attribute('value') 
print(value)  
相关问题