我测试使用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”值; 是不是可以动态地找到行索引?
我找到的解决方案是使用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'元件上方包含文本“缩写”的'TR'元件。 硒存储这个“TR”元件相对于任何它的父元素是的索引。
好了,现在我发现,硒能计算。 不幸的是不会隐象${tableXpath}.${initialsRow + 1}.1
。 所以我增加了一个额外的命令:
storeEval || ${ORBInitialPort} + 1 || ORBInitialPortRow
和使用ORBInitialPortRow
代替ORBInitialPort
作为索引。
文章来源: Selenium IDE - Can I select a row based on column content to verify other columns?