WebDriver中对表格的处理

在web的自动化测试过程中,经常需要对表格进行处理,比如下图的网页:

技术分享

现在我们想选择第二个单选按钮,那么如果处理?

方法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;
	}
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。