Как Selenium RC может обрабатывать динамические строки? - PullRequest
1 голос
/ 23 мая 2011

У меня есть таблица, похожая на следующую:

Часть # Цена Статус
1-я часть $ 1,00 Хорошо
2-я часть $ 2,00 Снятые
N-я часть № $ N.00 переупорядоченные

Мой java-код будет искать статус «N-й части №», где я понятия не имею, насколько велика таблица, сколько у нее столбцов, и не знаю, что такое N (до времени выполнения). В Ruby / WATIR я использовал бы идентификатор таблицы, чтобы захватить ее HTML, а затем использовал Ruby для итерации по строкам до совпадения с частью #, а затем проверял бы соответствующий статус этой строки в столбце Status (какой бы столбец ни был, но он установлен в строке заголовка hd).

Стандартная функция поиска таблиц Selenium selenium.getTable ("table.1.2") работает только для статических таблиц, содержащих одинаковое содержимое для каждого теста. Избыточное убийство selenium.get_html_source - пустая трата, так как selenium уже знает, как найти таблицу, плюс мне приходится анализировать всю веб-страницу.

Любые идеи о том, как я могу получить HTML-таблицу, и как лучше всего перебирать строки и / или столбцы?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Самое простое, что можно сделать, это использовать getTable, например,

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

, чтобы получить ячейку "Status" для строки 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), row и column начинаются с 1.

0 голосов
/ 23 мая 2011

Не совсем то, что вы просите, но я решил похожую проблему, присвоив уникальный идентификатор (номер детали, как это звучит в вашем случае) в качестве идентификатора html для tr.Затем я использовал локаторы Selenium xpath, чтобы получить строку и столбцы, необходимые для моего теста.

...