Selenium IDE - 我可以根据列内容选择一行来验证其他列吗?

时间:2012-06-15 13:20:28

标签: selenium selenium-ide

我正在使用Selenium IDE测试应用程序。有一个不稳定行排序的表 - 这意味着我需要验证的元素在每次测试运行时都在不同的行中。

我想使用已知在第一列中的文本来查找行;然后验证同一行中的其他列。

测试如下:

store        || //form/table                    || tableXpath
store        || 3                               || initialsRow
verifyTable  || ${tableXpath}.${initialsRow}.0  || Initials
verifyTable  || ${tableXpath}.${initialsRow}.1  || MJ
verifyTable  || ${tableXpath}.${initialsRow}.2  || MH

而不是硬编码“initialsRow”值;是不是可以动态找到行索引?

2 个答案:

答案 0 :(得分:5)

我找到的解决方案是使用Selenium的storeElementIndex命令。它获取HTML元素相对于其父元素的索引。

请参阅http://release.seleniumhq.org/selenium-core/1.0.1/reference.html

我按如下方式更改了测试:

store             || //form/table                                 || tableXpath
storeElementIndex || ${tableXpath}//tr/td[text() = "Initials"]/.. || initialsRow
verifyTable       || ${tableXpath}.${initialsRow}.1               || MJ
verifyTable       || ${tableXpath}.${initialsRow}.2               || MH

XPath查询//form/table//tr/td[text() = "Initials"]/..在'td'元素上方找到包含文本“Initials”的'tr'元素。 Selenium存储此'tr'元素相对于其父元素的索引。

答案 1 :(得分:2)

好吧,现在我发现,硒可以计算出来。不幸的是,并不像${tableXpath}.${initialsRow + 1}.1那样含蓄。 所以我添加了一个额外的命令:

storeEval || ${ORBInitialPort} + 1 || ORBInitialPortRow

并使用ORBInitialPortRow代替ORBInitialPort作为索引。