Python 如何在webdriver中获取元素的当前内容
我一定是想错了 我想在我使用Webdriver/Selenium 2访问的页面上获取元素的内容,在本例中是formfield 这是我的密码:Python 如何在webdriver中获取元素的当前内容,python,selenium,webdriver,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> (注意空白行) 我知道元
Element=driver.find_element_by_id(ElementID)
print Element
print Element.text
结果如下:
<selenium.webdriver.remote.webelement.WebElement object at 0x9c2392c>
(注意空白行) 我知道元素中有内容,因为我刚刚用前面的命令使用.sendkeys将它们填充在那里,并且我可以在脚本运行时在实际的网页上看到它们
但我需要把内容放回数据中我能做些什么来阅读这个?最好是以通用的方式,这样我就可以从各种类型的元素中提取内容。在Java中是它的Webelement.getText()。我对python不太清楚 我相信普雷斯托曼尼弗斯托走上了正确的道路。这取决于它是什么样的元素。您需要为输入元素使用
element.get_属性('value')
,并使用element.text
返回元素的文本节点
您可以使用element.tag\u name
检查WebElement对象,找出它是什么类型的元素,并返回适当的值
这将帮助您了解:
driver=webdriver.Firefox()
司机,上车http://www.w3c.org')
元素=驱动程序。按元素名称('q')查找元素
元素。发送_键('hi mom')
element\u text=element.text
元素\属性\值=元素。获取\属性('值')
打印元素
打印'element.text:{0}'。格式(element_text)
打印“element.get\u attribute(\'value\):{0}”。格式(element\u attribute\u value)
driver.quit()
我的答案基于以下答案:
更像是复制粘贴
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()
我知道你说的“contents”不是这个意思,但是如果你想找到一个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)
everything=b.execute\u脚本(
'var element=参数[0];'
'var attributes={};'
'for(index=0;index
您还可以使用元素获取一些额外数据
我认为这是您希望从Web元素获得的所有数据。它是什么类型的元素?如果它是一个输入元素,您需要属性“value”而不是textAh,那么value就是解决方案。我会尽力的。谢谢。。我已经在网站上搜寻这个答案好几个小时了@KehlinSwain乐于提供帮助:)如果一行中有多个类,那么同样的方法是否有效,您想获取该行中每个类的文本吗?问号意味着它是关于python
的命令,用于获取页面上没有实际显示的属性,如hrefs等,另外还有1个用于获取元素:element.get_attribute('outerHTML')
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)