我正在使用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”值;是不是可以动态找到行索引?
答案 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
作为索引。