2016-11-28 44 views
-1

請看看下面的webelement拋出異常

<ul id="ul_list"> 
    <li> 
    <a>Text1</a> 
    </li> 
    <li> 
    <span>Text2</span> 
    </li> 
    <li> 
    <span>Text3</span> 
    </li> 
</ul> 

給出的劇本,我能找到UL標籤和李標籤。

WebElement ul_tag = wdriver.findElement(By.id("ul_list")); 
List<WebElement li_tag = ul_tag.findElements(By.tagName("li")); 

但問題是,當我遍歷「li_tag」我想找到span標籤,並在第一次嘗試,它拋出異常(NoSuchElementFoundException)。我想要做的是避免這種情況。暫時我已經使用try和catch塊來處理它(繼續在catch塊中以便執行繼續)。這是處理這種情況的正確方法嗎?

+3

它的一個標籤和剩餘是「跨度」標籤。是否預計?你能分享代碼如何遍歷所有li元素嗎? –

回答

1

忽視了「鋰」不具有任何跨度,重寫代碼的第二行是這樣的:

List<WebElement> li_tag_with_span=ul_tag.findElements(By.xpath(".//li[descendant::span]")); 

它發現所有「禮」有「跨越」,在它的子節點。然後你可以迭代列表。

0

我試圖找到span標籤,並在第一個嘗試,它拋出異常(NoSuchElementFoundException)

正如你說,你正在尋找<span>元素中<li>但它在第一次嘗試拋出異常這是絕對正確的,因爲裏面第一個<li>元素顯然看起來沒有<span>元素存在。

如果你想查找裏面<li><span>元素,你可以嘗試在一個班輪解決方案使用cssSelector替代以及下文: -

List<WebElement> span_tag = ul_tag.findElements(By.cssSelector("ul#ul_list > li > span")); 
第一li元素