2016-09-23 7 views
0

私はセレンの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)  
関連する問題