使用XPATH定位嵌套的HTML数据属性

时间:2018-01-06 23:36:05

标签: html css xpath

我正在努力用XPATH ...

来定位一些特定的HTML

使用CSS,我知道正确的定位是:

html > body > div.page-content > div.container > div.myaccount > div > div:nth-child(4) > ul > [data-coin="BTC"] > div > div:nth-child(2)

HTML是:



<html lang="en">
   <body style="">
      <div class="page-content">
         <div class="container" style="padding-top:10px;padding-bottom:50px">
            <div class="myaccount">
               <div class="row">
                  <div class="col-md-12">
                     <ul class="listgroup">
                        <li class="hidden-xs hidden-sm list-group-item tradeitem" data-coin="BTC" data-coindisplay="BTC">
                           <div class="row marketrow">
                              <div class="col-sm-2"><img src="/public/img/coinmd/bitcoin.png?v=68" style="height:37px"> &nbsp;Bitcoin</div>
                              <div class="col-sm-2">$23329.28</div>
                              <div class="col-sm-2">$23329.28</div>
                              <div class="col-sm-2">$370,105,221,964</div>
                              <div class="col-sm-1"><span class="moveup">14.76%</span></div>
                              <div class="col-sm-3">
                                 <a href="/buy/btc" class="btn btn-default btn-sm">Buy BTC</a>&nbsp;&nbsp;
                                 <a href="/sell/btc" class="btn btn-default btn-sm">Sell BTC</a>
                              </div>
                           </div>
                        </li>
                     </ul>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </body>
</html>
&#13;
&#13;
&#13;

我尝试过的XPATH是:

//*[contains(concat( " ", @class, " " ), concat( " ", "col-sm-2", " " ))]

^这有效,但过于通用,因为HTML元素定位每天都会改变。它也没有考虑祖父母HTML的数据属性。

所以我的问题是我需要什么样的XPATH才能专门针对这个元素(就像我可以用CSS一样)?

&#13;
&#13;
<div class="col-sm-2">$23329.28</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

感谢为此帖做出贡献的人。 我发现的答案是:
// * [@数据硬币= 'BTC'] / DIV / DIV [2])[1]