2011-05-20 64 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 
相關問題