2013-09-27 67 views
0

我試圖從網站的頁面中獲取錯誤消息。該列表包含幾個可能的錯誤,所以我不能通過ID檢查;但我確實知道顯示器:list-item是我想要的。這是我的規則,但似乎不起作用,它有什麼問題?我想要返回的是元素中的錯誤文本。在列表中選擇可見xpath

//*[@id='errors']/ul/li[contains(@style,'display:list-item')] 

例DOM元素:

<div id="errors" class="some class" style="display: block;"> 
<div class="some other class"></div> 
<div class="some other class 2"> 
<span class="displayError">Please correct the errors listed in red below:</span> 
<ul> 
    <li style="display:none;" id="invalidId">Enter a valid id</li> 
    <li style="display:list-item;" id="genericError">Something bad happened</li> 
    <li style="display:none;" id="somethingBlah" ............ </li> 
    .... 
</ul> 
</div> 
+0

給出完整的HTML ..至少是HTML的一部分,通過它我們可以理解你寫的XPATH .. –

+0

你能從'Example dom elements'發佈更多嗎?至少2個3個元素更高.. –

+0

添加了更多的問題 – Shawn

回答

1

正確的XPath應該是:

//*[@id='errors']//ul/li[contains(@style,'display:list-item')] 

//*[@id='errors']後,您需要一個額外的/,因爲<ul>不能直接在它下面。使用//再次掃描<ul>的所有基礎元素。

如果你有能力不使用//它會更好,更快,更少的消耗。

+0

這工作。我讚賞這個解釋,因爲我只是想問。我必須再等6分鐘才能看到正確的答案。感謝您的快速響應。我學到了一些新東西。 – Shawn