4

我正在使用 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”值;不能动态找到行索引吗?

4

2 回答 2

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"]/..在包含文本“Initials”的“td”元素上方找到“tr”元素。Selenium 存储此“tr”元素相对于其父元素的索引。

于 2012-06-15T13:20:29.120 回答
2

好吧,现在我发现,selenium 可以计算。不幸的是没有含蓄地喜欢${tableXpath}.${initialsRow + 1}.1。所以我添加了一个额外的命令:

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

并用作ORBInitialPortRow索引ORBInitialPort

于 2015-06-19T09:44:31.620 回答