2012-04-20 4 views
43

Должно быть, я думаю об этом неправильно.Как получить текущее содержимое элемента в webdriver

Я хочу, чтобы получить содержимое элемента, в данном случае поле формы, на одной странице, что я обращающегося с WebDriver/Selenium 2

Вот мое разбитое код:

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

здесь результат:

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

(Обратите внимание на пустую строку) Я знаю, что элемент имеет содержимое, так как я просто засунул их там с помощью предыдущей команды .sendkeys, и я могу видеть их на фактической веб-странице во время запуска скрипта.

, но мне нужно вернуть содержимое в данные.

Что я могу сделать, чтобы прочитать это? Предпочтительно в общем виде, чтобы я мог извлекать содержимое из различных типов элементов.

+3

какой он элемент? Если это элемент ввода, вам нужен атрибут «значение» вместо текста – prestomanifesto

+0

Ах, Value может быть решением. Будет пытаться. –

ответ

50

Я считаю, что prestomanifesto был на правильном пути. Это зависит от того, какой элемент он есть. Вам нужно будет использовать 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 Happy help :) – Isaac

+0

Этот же метод работает, если в строке есть несколько классов, и вы хотите получить текст каждого класса в этой строке? –

-5

В Java его Webelement.getText(). Не уверен в python.

+2

Тэг вопроса подразумевает, что речь идет о 'python' – Leva7

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() 
Смежные вопросы