2011-05-20 87 views
5

的HTML看起来是这样的:如何提取HTML标记中的文本(在Selenium IDE中)?

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

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

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

回答

3

你可以使用带Javascript的getEval()来返回元素的innerHTML。你必须找到它在JavaScript中,虽然

+0

谢谢你,那有效。稍后我会发布更详细的答案。 – Alex 2011-05-20 11:29:47

+0

您也可以考虑将此回复标记为正确,如果它适合您 – Tarun 2011-05-21 09:38:38

1

@Tarun:我想如果我能为人....

@Grooveek:感谢的人,是工作。 我用:

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

这节省了第九paragrah的内容在变p。 我不得不使用getElementsByTagName,因为标签没有标识。

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

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

希望这将帮助其他人了。 再次感谢。 。

4

的innerHTML

我会通过document.getElementById尝试( 'ID')的innerHTML

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

0

getAttribute(“innerHTML”);适合我

0

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

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

数字0将返回第一次出现。如果有多个元素,请选择合适的数字,或者通过.length得到类别发生的数量。长度

storeEval | window.document.getElementsByClassName('*classname*').length; | ClassCount 
相关问题