Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
如何提取HTML标记中的文本(在Selenium IDE中)?_Selenium - Fatal编程技术网

如何提取HTML标记中的文本(在Selenium IDE中)?

如何提取HTML标记中的文本(在Selenium IDE中)?,selenium,Selenium,html的外观如下所示: <p> sometext1 <br> sometext2 <br> sometext3 </p> sometext1 sometext2 sometext3 我想提取段落标记之间的所有文本,包括标记 我尝试使用storeText函数,但它只存储文本,没有标记。 我可以存储整个HTML源代码,然后在Perl中提取我需要的内容,但我想知道是否有一种方法可以使用特定的xpath

html的外观如下所示:

<p>
    sometext1
    <br>
    sometext2
    <br>
    sometext3
</p>

sometext1

sometext2
sometext3

我想提取段落标记之间的所有文本,包括

标记

我尝试使用
storeText
函数,但它只存储文本,没有标记。
我可以存储整个HTML源代码,然后在Perl中提取我需要的内容,但我想知道是否有一种方法可以使用特定的xpath存储HTML代码块(例如,将网页中第三个表的HTML代码存储在一个变量中)。

您可以使用getEval()和返回元素内部HTML的Javascript。您必须在javascript中找到它,不过

@Tarun:如果我能找到,我会的

@谢谢你,伙计,这很管用。 我用过:

这将第9段的内容保存在变量
p
中。 我不得不使用
getElementsByTagName
,因为标记没有id

为了更精确,可以使用
getElementById
函数:

 storeEval | window.document.getElementById("id of element").innerHTML | p
希望这也能帮助其他人。 再次感谢。

innerHTML

我将尝试使用document.getElementById('id')。innerHTML我建议:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("url")
element = driver.find_element_by_tag_name("p")
text = element.text

但请记住,如果您处理的是文本框,则不能使用
.text
;它返回
None
。在这种情况下,您应该使用
.get\u属性(“value”)
,当您无法捕获所需内容时,可以使用
.get\u属性(“innerHTML”)

getAttribute(“innerHTML”);适用于我

我建议通过类名查找它,不是所有对象都有它的Id

storeEval | window.document.getElementsByClassName('*classname*')[0].innerHTML; | HTMLContent
数字0将返回第一次出现的值。如果有多个元素,请选择适当的数目,或按.length获取类出现的数目

storeEval | window.document.getElementsByClassName('*classname*').length; | ClassCount

谢谢你,伙计,这很有效。稍后我会发布一个更详细的答案。你也可以考虑把这个响应标记为正确的,如果它对你有用的话。
storeEval | window.document.getElementsByClassName('*classname*').length; | ClassCount