2017-07-12 73 views
0

我試圖找出從下面的HTML檢索「項目(X)」中的XPath,但沒有任何結果的動態元素:如何點擊

<li class=""> 
    <span id="c1025_ctl"> 
     <a id="c1025"> 
      <span>Similar people</span> 
     </a> 
    </span> 
</li> 
<li class="tabs-selected"> 
    <span id="c1016_ctl"> 
     <a id="c1016"> 
      <span>Projects (x)</span> 
     </a> 
    </span> 
</li> 
<li class=""> 
    <span id="c1037_ctl"> 
     <a id="c1037"> 
      <span>Info</span> 
     </a> 
    </span> 
</li> 

我到目前爲止已經試過與//a[contains(.,'Projects (x)')]/span//a[contains(.,'Projects (x)')]

+0

你想要什麼元素? A或DIV元素? – StefanE

+0

您好StefanE,我試圖得到一個元素 – Mary

+0

你可以嘗試// a [contains(text(),'Projects(x)')] – Murthi

回答

0

你可以嘗試的XPath:

//span[. = 'Projects (x)'][parent::a]/parent::a如果你想要得到的元素a

末刪除parent::a如果你想各具特色的XPath時只是span

1

如果id s的已知的並且是一致的,下面應首選:

//a[@id="c1016"] 

如果您只能根據您的搜索文字,你可以這樣做:

//a[./span/text()="Projects (x)"] 

我測試過這些上http://www.xpathtester.com/xpath,我成功地檢索目標使用封裝在根標籤中的示例數據(爲了使它成爲有效的XML)後的210標籤;但我不能分享結果,因爲網站的save函數似乎在第一次報價後從XPath字段中刪除了所有內容。

關於您在評論中添加的代碼Java,我會嘗試調用By.xpath(...).toString()方法,希望它能顯示整個構建的XPath。這可能會指出其構建中的錯誤。請注意,我不知道Selenium,只能希望By.toString方法會以這種方式表現。

如果沒有,我會用我的IDE調試器來檢查調用By.xpath(...)時創建的By項,並檢查其字段,期望找到一個包含整個構造XPath的字段。

+0

我在Chrome中使用這個插件:https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl = en然後你可以直接在頁面上測試你的xpath – StefanE