selenium大部分的方法參數(shù)都是java.lang.String locator,假如我們想傳入xptah表達(dá)式,可以在表達(dá)式的開頭加上"xpath=",也可以不加.如下面的兩個(gè)效果是一樣的.
selenium.getAttribute("//tr/input/@type") === selenium.getAttribute("xpath=//tr/input/@type")
selenium中有一個(gè)比較特別而非常有用的方法
java.lang.Number getXpathCount(java.lang.String xpath)
通過此方法我們可以得到所有匹配xpath的數(shù)量,調(diào)用此方法,傳入的表達(dá)式不能以"xpath="
開頭.
另外需要知道的是:當(dāng)xpath表達(dá)式匹配到的內(nèi)容有多個(gè)時(shí),seleium默認(rèn)的是取第一個(gè),假如,我們想
自己指定第幾個(gè),可以用"xpath=(xpath表達(dá)式)[n]"來獲取,例如:
selenium.getText("//table[@id='order']//td[@contains(text(),'刪除')]");
在id為order的table下匹配第一個(gè)包含刪除的td.
selenium.getText("xpath=(//table[@id='order']//td[@contains(text(),'刪除')])[2]");
匹配第二個(gè)包含刪除的td.
在調(diào)試xpath的時(shí)候,我們可以下個(gè)firefox的xpath插件,這樣可以在頁(yè)面上通過右鍵開啟xpath插件.
然后隨時(shí)可以檢驗(yàn)xpath所能匹配的內(nèi)容,非常方便.假如通過插件測(cè)試的xpath表達(dá)式可以匹配
到預(yù)期的內(nèi)容,但是放到selenium中跑卻拿不到,那么有可能出現(xiàn)的問題是:在你調(diào)用seleium方法
時(shí),傳入的xpath表達(dá)式可能多加了或者是少加了"xpath=".
以下為幾個(gè)常用的xpath:
1.selenium.getAttribute("//tr/input/@type")
2.selenium.isElementPresent("//span[@id='submit' and @class='size:12']");
3.selenium.isElementPresent("//tr[contains(@sytle,'display:none')]");
4.selenium.isElementPresent("//*[contains(name(),'a')]"); //這個(gè)等價(jià)于 //a
5.selenium.isElementPresent("//tr[contains(text(),'金錢')]");