2012-04-20 71 views
43

我一定在想這個錯誤。如何獲得webdriver中元素的當前內容

我想獲得一個元素的內容,在這種情況下formfield,那我用的webdriver /硒2

這裏訪問的網頁上我的斷碼:

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

這裏結果如下:

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

(注意空行) 我知道元素有內容,因爲我只是用他們釀在那裏與之前的命令.sendkeys和腳本運行時,我可以在實際的網頁上看到它們。

但我需要將內容返回到數據。

我該怎麼辦?最好以通用的方式,以便我可以從各種類型的元素中提取內容。

+3

是什麼樣的元素呢?如果它是一個輸入元素,你需要屬性「值」而不是文本 – prestomanifesto 2012-04-20 23:02:35

+0

啊,價值可能是解決方案。將嘗試。 – 2012-04-23 12:55:35

回答

50

我相信prestomanifesto是在正確的軌道上。這取決於它是什麼樣的元素。您需要使用element.get_attribute('value')作爲輸入元素,element.text才能返回元素的文本節點。

您可以使用element.tag_name檢查WebElement對象,找出它是什麼類型的元素並返回適當的值。

這會幫助你弄清楚:

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

謝謝..我一直在爬行網站這個答案數小時! – 2015-05-29 07:31:40

+0

@ KeelinSwain樂意幫忙:) – Isaac 2015-05-29 17:13:18

+0

如果一行中有多個類,並且您想要獲取該行中每個類的文本,這種方法是否可行? – 2015-05-29 21:23:16

-5

在Java中它的Webelement.getText()。不確定關於python。

+2

問題標籤意味着它是關於'python' – Leva7 2016-05-25 15:55:57

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()