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

时间:2011-05-20 09:17:04

标签: selenium

html看起来像这样:

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

我想提取段落标记之间的所有文字,包括<br>标记。

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

6 个答案:

答案 0 :(得分:4)

的innerHTML

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

答案 1 :(得分:3)

你可以使用带有Javascript的getEval()来返回元素的innerHTML。你必须在javascript中找到它,不过

答案 2 :(得分:1)

@Tarun:如果我能做人,我会的。

@Grooveek:谢谢你,这很有效。 我用过:

 storeEval | window.document.getElementsByTagName("p").item(9).innerHTML | p

这在变量p中保存了第9个paragrah的内容。 我不得不使用getElementsByTagName,因为标签没有ID。

为了更准确,可以使用getElementById功能:

 storeEval | window.document.getElementById("id of element").innerHTML | p

希望这也能帮助其他人。 再次感谢。

答案 3 :(得分:1)

我建议:

from selenium import webdriver

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

但请记住,如果您正在处理文本框,则不能使用.text;它返回None。在这种情况下,您应该使用.get_attribute("value"),当您无法捕捉到所需内容时,可以使用.get_attribute("innerHTML")

答案 4 :(得分:0)

getAttribute("innerHTML"); works for me

答案 5 :(得分:0)

我建议通过类名找到它,并非所有对象都有它的ID。

storeEval | window.document.getElementsByClassName('*classname*')[0].innerHTML; | HTMLContent

数字0将首先返回。如果有多个元素,请选择正确的数字,或者通过.length

获取类的出现次数
storeEval | window.document.getElementsByClassName('*classname*').length; | ClassCount