2012-04-20 10 views
43

これについて間違って考える必要があります。webdriverの要素の現在の内容を取得するには

私はwebdriverを/セレンここ2

にアクセスしていますがページ上で、この場合には、フォームフィールドの要素の内容を取得したいです私の壊れたコード:ここ

Element=driver.find_element_by_id(ElementID) 
print Element 
print Element.text 

結果は次のとおりです。私は使用して前のコマンドでそこにそれらを詰め以来

<selenium.webdriver.remote.webelement.WebElement object at 0x9c2392c> 

(空白行に注意してください) 私はその要素が内容を持って知っています.sendkeysと私はスクリプトが実行されている間、実際のWebページでそれらを見ることができます。

しかし、私は内容をデータに戻す必要があります。

これを読むには何ができますか?私はさまざまな種類の要素からコンテンツを引き出すことができるように一般的なやり方で行うのが好ましい。

+3

どのような要素ですか?それが入力要素の場合は、テキストの代わりに属性 "値"が必要です – prestomanifesto

+0

ああ、値が解決策になります。試してみるだろう。 –

答えて

50

私は前立腺が正常な軌道にあると信じています。それはどのような要素であるかによって異なります。入力要素にはelement.get_attribute('value')、要素のテキストノードは、element.textを返す必要があります。

WebElementオブジェクトをelement.tag_nameでチェックして、どのような要素であるかを調べ、適切な値を返すことができます。

これは、あなたが把握助けるべきである:

driver = webdriver.Firefox() 
driver.get('http://www.w3c.org') 
element = driver.find_element_by_name('q') 
element.send_keys('hi mom') 

element_text = element.text 
element_attribute_value = element.get_attribute('value') 

print element 
print 'element.text: {0}'.format(element_text) 
print 'element.get_attribute(\'value\'): {0}'.format(element_attribute_value) 
driver.quit() 
+0

ありがとうございます。私はこの回答のためにウェブサイトを数時間クロールしています! –

+0

@KehlinSwain幸せに助けてください:) – Isaac

+0

行に複数のクラスがあり、その行の各クラスのテキストを取得する場合は、この同じ方法が機能しますか? –

-5

Javaの場合Webelement.getText()。 Pythonについてはわかりません。

+2

質問タグは、それが 'python'であることを暗示しています – Leva7

3
element.get_attribute('innerHTML') 
0

私の答えは、この回答に基づいています。ちょうどより多くのコピー&ペーストのようHow can I get the current contents of an element in webdriver

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('http://www.w3c.org') 
element = driver.find_element_by_name('q') 
element.send_keys('hi mom') 

element_text = element.text 
element_attribute_value = element.get_attribute('value') 

print (element) 
print ('element.text: {0}'.format(element_text)) 
print ('element.get_attribute(\'value\'): {0}'.format(element_attribute_value)) 


element = driver.find_element_by_css_selector('.description.expand_description > p') 
element_text = element.text 
element_attribute_value = element.get_attribute('value') 

print (element) 
print ('element.text: {0}'.format(element_text)) 
print ('element.get_attribute(\'value\'): {0}'.format(element_attribute_value)) 
driver.quit() 
関連する問題