2016-08-18 8 views
1

私はselenium webdriverを使用しています。私は助けてください。 私のXPathは次のようになります。Selenium webdriverを使用してスパン内のテキストをキャプチャする

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

コード:

私は、テキスト "プロビジョニングアクセス - HUE" をキャプチャしたい
<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> 

。しかし、私がSelenium webdriver 2を使用すると、「Type is Access Request」として出力されています。

+0

こんにちはプリシラ、とスタックオーバーフローへようこそ。あなたのxpath '// */span [@ class = 'value']'は、 "Access Request"というテキストで、別のhtml要素を探している可能性があります。 FireFoxのFirePathなどのツールを使ってxpathをデバッグし、それが問題かどうかを確認することをお勧めします。 –

+0

"Type" "// */span [@ class = 'value']"に使用されるxpathのように見えますが、おそらく複数の一致が見つかります。 Webdriverは最初の試合のテキストのみを返します。 – CynicalBiker

+0

レンズマンありがとうございます。 Firebugを使用して、xpath全体を試しました: html/body/div [1]/section/div/div/div/div/div [1]/div [1]/div [2]/ul/li [1 ]/div/span – Priscilla

答えて

1

idしてもよいし、findElementは常に最初に一致したロケータ要素を返しますので、あなたはあなたの欲求の要素を見つけることができユニークなロケータを作成する必要がありますされて、私はクラス名valueを持つ複数のspanの要素があると思います、あなたは他のspanを見つけていますあなたは以下のように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

投票の理由も説明してください... :) –

関連する問題