Jmeter书中不会教你的(80)——webdriver下拉框选择_agrapea的博客-CSDN博客
紧接着上面80课的内容,查询航班后到下一个选择航班页面,我们固定选择了出发地为Boston,目的地为Rome
查询航班信息如下
目的:希望在查询的航班中找出最便宜价格的航班选择
一、首先先打印查询出来的航班信息,每一个航班信息都是表格中的一行,以tagName=‘tr’表示,并且层级是在tbody下
var flights=WDS.browser.findElement(pkg.By.tagName("tbody")).findElements(pkg.By.tagName("tr"));
WDS.log.info("航班个数:"+flights.size());
//打印所有航班信息,下标从0开始
for(i=0;i<flights.size();i++)
{
WDS.log.info(flights[i].getText());
}
二、找出最便宜的航班
从上图打印结果可以看出,第3条航班信息价格最优惠
航班价格固定在表格的第6列,通过xpath查找表格中第六列的价格,然后进行比较,说明下xpath中//表示相对路径,比如//tbody//tr/td[6]意思是查找tbody下所有tr元素下第6列的值
var p=WDS.browser.findElements(pkg.By.xpath("//tbody//tr/td[6]"));
WDS.log.info(p.size());
//截取字符串,因为获取的价格带有$无法比较
WDS.log.info(p[0].getText().substring(1));
//将字符串转换为数值使用Number()
minprice=Number(p[0].getText().substring(1));
minrow=0;
for(i=1;i<p.size();i++)
{
price=Number(p[i].getText().substring(1));
if(minprice>price)
{
minprice=price;
minrow=i;
}
}
WDS.log.info("当前最小值:"+minprice+",当前最小行是:"+minrow);
打印的最小行下标是从0开始,实际指的就是第3个航班
三、找出了最便宜的航班后选择
查看下最便宜航班的结构,这时候应该明确只找其中一个元素,需要选中最便宜的航班后点击Choose This Flight
在tbody下找到那一行,此时应该是绝对路径,并在这一行下找到第一列,需要注意的是在xpath中引用变量是直接tr[minrow]是无法识别的,需要在变量前后加“+ var+”
//选择最小的航班点击
var selectflight=WDS.browser.findElement(pkg.By.xpath("//tbody/tr["+minrow+"]/td[1]/input[@type='submit']"));
selectflight.click();
至此已完成所需目标