Selenium RC如何处理动态行?

时间:2011-05-23 15:26:31

标签: java selenium-rc

我有一张类似于以下内容的表格:

       部分#     价钱     状态      
       第一部分#     $ 1.00包装     好      
       第二部分#     $ 2.00     停产      
       第N部分#     $ N.00     重新排序   

我的java代码将查找“Nth Part#”的状态,其中我不知道表有多大,它有多少列,也不知道N是什么(直到运行时)。在Ruby / WATIR中,我会使用表的id来获取它的HTML,然后使用Ruby迭代行直到部分#匹配,然后在Status列中检查该行的相应状态(无论哪一列,但它设置在高清标题的行中。

Selenium的标准表查找函数selenium.getTable(“table.1.2”)仅适用于每个测试包含相同内容的静态表。过度杀戮selenium.get_html_source是一种浪费,因为selenium已经知道如何找到这个表,然后我必须解析整个网页。

关于如何获取表格的html的任何想法,以及迭代行和/或列的最佳方法是什么?

提前致谢。

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用getTable这样的

selenium.getTable("table." + (1 + n) + ".3")

如果您知道n将在运行时将获得n行的“状态”单元格。

如果你试图迭代表中的所有行,你可以做这样的事情

try {
    for(int n = 1; true; n++) {
         String cellContents = selenium.getTable("table." + n + ".3");
         //do something with n
    }
}
catch {
    //handle end of table
}

或者

final int rowCount = (int)selenium.getXPathCount("id('table')/tbody/tr");
for(int n = 1; n < rowCount; n++) {
    String cellContents = selenium.getTable("table." + n + ".3");
}

请记住,在getTable(locator.row.column)中,rowcolumn从1开始。

答案 1 :(得分:0)

不完全是你要求的,但我通过将唯一ID(在你的情况下听起来像是部件号)分配给tr的html id解决了类似的问题。然后我使用Selenium xpath定位器来获取我测试所需的行和列。