在使用ride调用selenium2library进行web测试时,先后遇到了几个问题。
1. 第一个问题就是在块状布局的页面上始终无法选中控件,总说did not match. 用xpath或各种属性都没有用。
在仔细查看xpath的层级和各项内容后,发现这些控件都在frame层下,而selenium提供了选择frame的函数。所以不select frame就直接查找控件,是无法找到的。
select frame name=leftFrame
2. 第二个问题是页面上会有一个按字母检索,每次检索会返回一个数据表格。而ride中,for循环只能在数字或list中遍历,无法直接遍历字母。
没有现成的方法,只能考虑用其它方式解决。其实平台是用python写的,完全支持python语言的函数。但是貌似只能方便的支持单一语句,
: FOR ${A2Z} IN RANGE 65 91
\ ${letter} evaluate chr(${A2Z})
用字母的ascii码值做循环,然后用调用python语句的关键字,强大的evaluate调python完成字母转换,就可以完成字母的遍历了。
3. 第三个问题表格的遍历,需要先能知道表格的行数,然后再遍历。
查询了半天,可以使用get matching xpath count来获取,而rawlocator需要使用表中行的定义,如://table[@id= 'data']/tbody/tr
run keyword and return get matching xpath count .${rowLocator}
然后就可以按行数循环去查找单元格了。
${curText} Get Text ${rowLocator}[${rowIndex}]/td[${column}]