2014-09-04 197 views
0

從下面的HTML代碼,我想只選擇第一跨度類文本..如何排除XPATH嵌套SPAN類

<span class="item_amount order_minibasket_amount order_full_minibasket">10 
    <span class="article">Article 
     <i class="icon"> > 
     </i> 
    </span> 
</span> 

這是我目前XPATH:

//span[contains(@class,'order_minibasket_amount')] 

當我在我的Selenium測試使用此,我得到了整個SPAN TEXT。像:

10 Article > 

我只是想要得到的「10」的文章量..

AMOUNT(new PageElement(By.xpath("//span[contains(@class,'order_minibasket_amount')]/text()[1]"), "not such Element....")) 

    public String getAmount() { 
    return amount = PageObjectUtil.findAndInitElementInside(webElement, PageElements.AMOUNT.pe, amount, String.class); 
} 

提前許多感謝,

乾杯, KOKO

回答

0

你可以添加/text()到最後:

//span[contains(@class,'order_minibasket_amount')]/text() 

而是選擇span元素節點,這個XPath會選擇文本節點集這是直接子節點的span元素。這應該是一組兩個節點,一個包含「10」,一個換行符和四個空格(目標範圍的開始標記與嵌套範圍的開始標記之間的文本),另一個包含僅換行符關閉兩個範圍的標籤。如果你只想第一文本子節點(10,NL,空格),然後使用

//span[contains(@class,'order_minibasket_amount')]/text()[1] 
+0

當我使用這個Xpath「// span [contains(@ class,'order_minibasket_amount')]/text()[1]」 - 我得到了我想要的元素。但是我得到了這個錯誤。由...引起:org.openqa.selenium.InvalidSelectorException:無效的選擇器:xpath表達式的結果「// span [contains(@ class,'order_sel_minibasket_amount')]/text()[1]」是:[object Text]。它應該是一個元素。 (會話信息:chrome = 36.0.1985.143) – KoKo 2014-09-04 13:56:18

+0

@KoKo您可以編輯問題以顯示您用來執行XPath的代碼嗎?該表達式是正確的,並且正在返回文本節點,但似乎您使用的API要求僅選擇_element_節點。您可能需要分兩步進行操作,使用XPath選擇元素,然後通過其他API提取文本節點子元素。 – 2014-09-04 14:04:27

+0

@ Ian Roberts - 非常感謝我編輯了我的第一個問題。 – KoKo 2014-09-04 14:22:41

0

現在我使用的變通解決方案......但我不開心它:-(

public String getAmount() { 
    String tempAmount = PageObjectUtil.waitFindAndInitElement(PageElements.AMOUNT.pe).getText(); 
    String output = tempAmount.replaceAll("[a-zA-Z->]", ""); 
    return amount = output.trim(); 
} 

歡呼聲, KOKO

1

你想要的東西不能直接完成,你將不得不求助於String操縱。就像:

String completeString = driver.findElement(By.className("item_amount")).getText() 
String endString = driver.findElement(By.className("article")).getText() 
String beginString = completeString.replace(endString, "") 
+0

謝謝,@SiKing,我會盡力而爲。 – KoKo 2014-09-05 12:16:53