如果值已作为Selenium中的属性存在,您如何获得输入值?

时间:2016-09-23 20:52:33

标签: python selenium-webdriver

我试图在selenium webdriver中获取用户输入的值,但是,webdriver正在从'值'返回文本。属性改为。这是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

2 个答案:

答案 0 :(得分:0)

尝试执行JavaScript代码:

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

答案 1 :(得分:0)

  

这是Selenium中的错误吗?

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

实际上,您正在从已找到的元素获取属性值,而不是刷新的元素,其中属性值已经使用旧值存储在缓存中。这就是为什么你得到以前的价值。

您应该在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)