Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在webdriver中获取元素的当前内容_Python_Selenium_Webdriver - Fatal编程技术网

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

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> (注意空白行) 我知道元

我一定是想错了

我想在我使用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将它们填充在那里,并且我可以在脚本运行时在实际的网页上看到它们

但我需要把内容放回数据中


我能做些什么来阅读这个?最好是以通用的方式,这样我就可以从各种类型的元素中提取内容。

在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)