WebDriver中對錶格的處理

在web的自動化測試過程中,經常需要對錶格進行處理,比如下圖的網頁:

wKiom1UctSrTSSyJAADe52Lhmb0469.jpg

現在我們想選擇第二個單選按鈕,那麼如果處理?

方法1:數數

如果我們可以確定操作的單選按鈕所處的位置,比如第二個,那麼我們可以用如下方式:

webDriver.findElements(By.cssSelector("input[type='radio']")).get(1);

但是在實際項目中,我們是不能或者不容易確定這個順序的,所以有如下方式:

方法2:相對定位

因爲第二行中的JNDI name是唯一的,所以我們可以使用該屬性來定位tr,然後在tr中查找單選框進行操作,此處可以:

(1)使用xpth:

WebElement tr = webDriver.findElement(By.xpath("//tr[td[2]='jdbc/ProxyDS']"));
WebElement webElement = tr.findElement(By.cssSelector("input[type='radio']"));

擴展一下此處的xpath常用函數:

1)normalize-space:該函數可以把字符串兩端的空格去掉

2)upper-case,lower-case等XPATH2.0函數,可以把字符串轉成大寫或者小寫字母,但是現階段主流瀏覽器只支持XPATH1.0,所以此時需要使用hack,比如如下的XPATH表達式:

//tr[translate(td[3], "abcdefghijkl", "ABCDEFGHIJKL")='*LOCAL']

該表達式將選擇這樣的額tr:第三列的文本經過大寫轉換後的結果爲*LOCAL

如果還有其他較爲複雜的文本處理,可以考慮下文方法(2)進行定位。

(2)在table中,遍歷tr和td:

for(WebElement tr : webDriver.findElements(By.tagName("tr"))){
	List<WebElement> tdList = tr.findElements(By.tagName("td"));
	if(tdList.get(1).getText().equals("jdbc/ProxyDS")){
		return tr;
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章