2016-05-19 7 views
0

私のページの次のHTMLコードがあります。Selenium xPath - 部分テキストによる位置指定要素

<div class="views-field-wbapi-data-value-2014 wbapi-data-value wbapi-data-value-first"> 
    <span class="field-content"> 
     <span> 
      <a href="http://data.worldbank.org/indicator/SP.POP.TOTL/countries/SC?display=graph"> 
       <span class="human-readable"></span> 
      </a> 

そして

<div class="views-field-wbapi-data-value-2014 wbapi-data-value wbapi-data-value-first"> 
    <span class="field-content"> 
     <span> 
      <a href="http://data.worldbank.org/indicator/NY.GDP.MKTP.CD/countries/SC?display=graph"> 
       <span class="human-readable">91,400</span> 
      </a> 

私は、最初のHTMLコードブロックの<span class="human-readable"></span>を検索するには、次のXPathが出ています。

//div[@class='views-field-wbapi-data-value-2014 wbapi-data-value wbapi-data-value-first']/span/span/a/span 

しかし、上記のxpathを実行すると、HTMLコードからわかりやすい2つの一致するノードが表示されます。タグ 'a'のhrefパラメータには若干の違いがあります。第1のコードブロックは「SP.POP.TOTL」を含み、第2のブロックは「NY.GDP.MKTP.CD」を含む。

'a'タグのhrefパラメータの部分テキストにアクセスして、2つのブロックを区別するためにxpathに使用できる方法はありますか?私は「/国/」、「SC」の後に40の異なる国と毎回テキスト上でループのために実行していますので、変更を //a[@href='http://data.worldbank.org/indicator/SP.POP.TOTL/countries/SC?display=graph']/span

注:私は、次のXPathを使用することはできません。だから、私は国の接頭辞から独立した部分的なテキストを使わなければなりません。

+0

私はちょうど私のPCにしています...そして、あなたの昨日の質問に取り組んで... uはクラス= 'ビュー・フィールドwbapiデータ値-2014 @ [すぐ – noor

+0

// divのそれを得ることを願っていますwbapi-data-value wbapi-data-value-first ']/span/span/a/span [0] // div [@ class =' view-field-wbapi-data-value-2014]値wbapi-data-value-first ']/span/span/a/span [1] –

答えて

4

使用このcssSelectorとして下記のようなコードで

a[href*='SP.POP.TOTL']>span.human-readable 

使用これを:

driver.findElement(By.cssSelector("a[href*='SP.POP.TOTL']>span.human-readable")); 
+0

ありがとうございました。 – Uziii

+0

は、これを受け入れるとうれしいでしょう。 – noor

1

あなたは機能が含まれて使用してみましたか? 以下を追加してみてください。

/a[contains(@href,'SP.POP.TOTL')]/span 
関連する問題