Как получить текущее содержимое элемента в 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, и я могу видеть их на фактической веб-странице, пока выполняется script.
но мне нужно вернуть содержимое в данные.
Что я могу сделать, чтобы прочитать это? Предпочтительно в общем виде, чтобы я мог извлекать содержимое из различных типов элементов.
Ответы
Ответ 1
Я считаю, что престиминизм был на правильном пути. Это зависит от того, какой элемент он есть. Вам нужно будет использовать element.get_attribute('value')
для входных элементов и element.text
, чтобы вернуть текст node элемента.
Вы можете проверить объект 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()
Ответ 2
element.get_attribute('innerHTML')
Ответ 3
Мой ответ основан на этом ответе: Как получить текущее содержимое элемента в webdriver
просто больше похоже на 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()
Ответ 4
В Java его Webelement.getText(). Не уверен в python.