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