我一定在想这个错误。
我想在我使用Webdriver / Selenium 2访问的页面上获取元素的内容,在本例中为formfield
这是我破碎的代码:
Element=driver.find_element_by_id(ElementID)
print Element
print Element.text
结果如下:
<selenium.webdriver.remote.webelement.WebElement object at 0x9c2392c>
(注意空白行) 我知道该元素有内容,因为我只是使用.sendkeys在前面的命令中填充它们,我可以在脚本运行时在实际的网页上看到它们。
但我需要将内容恢复为数据。
我该怎么做才能读到这个?优选地,以通用方式使得我可以从不同类型的元素中提取内容。
答案 0 :(得分:69)
我相信prestomanife是在正确的轨道上。这取决于它是什么类型的元素。您需要使用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()
答案 1 :(得分:15)
element.get_attribute('innerHTML')
答案 2 :(得分:0)
我的回答是基于这个答案:How can I get the current contents of an element in webdriver 更像是复制粘贴。
<head runat="server">
<title>...</title>
<script language="javascript" type="text/javascript" src="file:///C:/Users/...(Absolute Path).../jquery.min.js"></script>
</head>
答案 3 :(得分:0)
我知道当您说“内容”时,您并不是要这样,但是,如果要查找Webelement的所有属性的所有值,这是在python中使用javascript的一种很不错的方法:>
everything = b.execute_script(
'var element = arguments[0];'
'var attributes = {};'
'for (index = 0; index < element.attributes.length; ++index) {'
' attributes[element.attributes[index].name] = element.attributes[index].value };'
'var properties = [];'
'properties[0] = attributes;'
'var element_text = element.textContent;'
'properties[1] = element_text;'
'var styles = getComputedStyle(element);'
'var computed_styles = {};'
'for (index = 0; index < styles.length; ++index) {'
' var value_ = styles.getPropertyValue(styles[index]);'
' computed_styles[styles[index]] = value_ };'
'properties[2] = computed_styles;'
'return properties;', element)
您还可以使用element.__dict__
获得一些额外的数据。
我认为这是您想从网络元素中获取的所有数据。
答案 4 :(得分:-7)
在Java中,它的 Webelement.getText()。关于python不确定。