2013-02-06 122 views
1

的XPath類和文字我有像這樣的元素:選擇span元素

<span class="myTest">Estimates</span> 

如何使用XPath來選擇呢?這是我有:

x("//*[contains(@class,'myTest')][normalize-space(text())='Estimates']") 
+1

,這是不工作?你有錯誤信息嗎?你得到的結果是不是你所期望的?你的XPath看起來合法乍一看(儘管我會用'[normalize-space()='Estimates']'替換第二個謂詞,因爲它更短,更習慣。怎麼了? –

+0

嗯,我的casperjs腳本說它找不到那個元素。我也想這樣做:// div [@ id ='ctl00_cphLeftPanel_mi_estimates_stderrors'and @ class ='level_2_active'] – cdub

+0

是的,必須對CasperJS有些事情沒有正確地突出顯示並找到我的元素。 – cdub

回答

1

你的選擇其實是正確的,這是一個使用casperjs掌握分支一個簡短的測試:

var x = require('casper').selectXPath; 

casper.test.begin('your selector is okay', 1, function(test) { 
    casper.start().setContent('<span class="myTest">Estimates</span>'); 
    test.assertExists(x("//*[contains(@class,'myTest')][normalize-space()='Estimates']")); 
    test.done(); 
}); 

演示:

$ casperjs test test-xpath.js 
Test file: test-xpath.js 
# your selector is okay 
PASS Found an element matching: xpath selector: //*[contains(@class,'myTest')][normalize-space()='Estimates'] 
PASS 1 tests executed in 0.118s, 1 passed, 0 failed.