2016-08-18 61 views
1

我使用硒webdriver和新的它。我需要幫助。 我的XPath看起來是這樣的:使用硒webdriver捕獲跨度內的文本

html/body/div[1]/section/div/div/div/div/div[1]/div[1]/div[2]/ul/li[1]/div/span 

代碼:

<div class="mod-content"> 
    <ul id="issuedetails" class="property-list two-cols"> 
     <li class="item"> 
     <div class="wrap"> 
      <strong class="name">Type:</strong> 
       <span id="type-val" class="value"> 
        <img width="16" height="16" title="Provision access - HUE"   src="/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype" alt=""/> 
        Provision access - HUE   
       </span> 
      </div> 

我想捕獲文本 「提供接入 - HUE」。但是當我使用硒webdriver 2

WebElement Type = driver.findElement(By.xpath("//*/span[@id='type-val]")); 
System.out.println("Type is "+Type.getText());//Printing Type 

我得到的輸出爲「類型是訪問請求」。

+0

嗨Priscilla,並歡迎來到堆棧溢出。有可能你的xpath'// */span [@ class ='value']'正在找到一個不同的html元素,並帶有「Access Request」文本。我建議使用諸如firefox的FirePath之類的工具來調試你的xpath,看看是否有問題。 –

+0

它看起來像用於「Type」的xpath「// */span [@ class ='value']」可能會找到多個匹配項。 Webdriver只會返回第一場比賽的文字。 – CynicalBiker

+0

謝謝Lensman。我使用了螢火蟲,並嘗試了整個xpath: html/body/div [1]/section/div/div/div/div/div [1]/div [1]/div [2]/ul/li [1 ]/div/span – Priscilla

回答

1

我認爲有具有類名value多個span元素,你是定位其他span因爲findElement總是返回第一個匹配的定位元素,你需要創建一個獨特的定位可能找到您的願望元素,可能是id是獨特的這裏,所以你應該嘗試如下使用By.id(): -

WebElement Type = driver.findElement(By.id("type-val")); 
System.out.println("Type is "+Type.getText()); 

如果id也不是唯一在這裏,請嘗試使用下面的XPath: -

WebElement Type = driver.findElement(By.xpath(".//strong[contains(text(), 'Type:')]/following-sibling::span[@id = 'type-val']")); 
System.out.println("Type is "+Type.getText()); 
+0

請解釋投票理由以及... :) –