如何在webdriver中获取元素的当前内容

时间:2012-04-20 18:26:35

标签: python selenium webdriver

我一定在想这个错误。

我想在我使用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在前面的命令中填充它们,我可以在脚本运行时在实际的网页上看到它们。

但我需要将内容恢复为数据。

我该怎么做才能读到这个?优选地,以通用方式使得我可以从不同类型的元素中提取内容。

5 个答案:

答案 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不确定。