2012-04-20 39 views
43

Tôi phải suy nghĩ về điều này sai.Làm cách nào để có được nội dung hiện tại của một phần tử trong webdriver

Tôi muốn nhận được các nội dung của một phần tử, trong trường hợp này một formfield, trên một trang mà tôi đang tiếp cận với Webdriver/Selenium 2

Đây là mã bị phá vỡ của tôi:

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

đây là kết quả:

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

(Chú ý dòng trống) tôi biết phần tử có nội dung kể từ khi tôi chỉ nhét chúng ở đó với các lệnh trước sử dụng .sendkeys và tôi có thể thấy chúng trên trang web thực tế trong khi tập lệnh chạy.

nhưng tôi cần đưa nội dung trở lại dữ liệu.

Tôi có thể làm gì để đọc nội dung này? Tốt nhất là theo kiểu chung để tôi có thể lấy nội dung từ nhiều loại yếu tố khác nhau.

+3

loại phần tử nào? Nếu đó là phần tử đầu vào, bạn cần thuộc tính "giá trị" thay vì văn bản – prestomanifesto

+0

Ah, Giá trị có thể là giải pháp. Sẽ cố gắng. –

Trả lời

50

Tôi tin rằng prestomanifesto đã đi đúng hướng. Nó phụ thuộc vào loại yếu tố đó là gì. Bạn sẽ cần phải sử dụng element.get_attribute('value') cho các yếu tố đầu vào và element.text để trả về nút văn bản của một phần tử.

Bạn có thể kiểm tra đối tượng WebElement với element.tag_name để tìm hiểu loại yếu tố đó là gì và trả lại giá trị thích hợp.

Điều này sẽ giúp bạn tìm ra:

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

Cảm ơn .. Tôi đã thu thập dữ liệu trang web cho câu trả lời này hàng giờ !! –

+0

@KehlinSwain Happy to help :) – Isaac

+0

Phương thức này có hoạt động nếu có nhiều lớp trong một hàng, và bạn muốn nhận được văn bản của mỗi lớp trong hàng đó? –

-5

Trong Java, Webelement.getText(). Không chắc chắn về python.

+2

Thẻ câu hỏi ngụ ý rằng đó là về 'python' – Leva7

3
element.get_attribute('innerHTML') 
0

câu trả lời của tôi là dựa trên câu trả lời này: How can I get the current contents of an element in webdriver chỉ giống như copy-paste.

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() 
Các vấn đề liên quan