Alex2a
(Alex2a)
#1
приветствую всех!
подскажите такой вопрос, автоматизирую тест web-странички на которой есть таблица.
используемые технологии:
- webdriver Selenium 2
- lanquage Ruby 1.8.7
- pages framework Taza
прежде работал с watir webdriver, и вот как это выглядело:
например есть таблица (2 ряда, 2 столбца):
<table>
<tr><td>Name</td> <td>ID</td>
<tr><td>Aleks</td><td>1</td>
<tr><td>Alex</td> <td>2</td>
</table>
количество рядов динамическое.
Taza file:
element(:profiles_table) { browser.table(:index, 1) }
table(:profiles) do
element(:name) { row.cell(:index, 1) }
element(:id) { row.cell(:index, 2)}
end
test file:
row = page.element.row(:name => "Alex")
puts row.id.text
этот код вернет мне ID соответствующее имени Alex
попробовал сделать тоже самое для selenium webdriver, но не работает.
подскажите имел ли кто-нибудь опыт работы c этим?
спасибо.
Taras
(Taras)
#2
вам нужно обертку к таблицам найти в интернете написаную для веб драйвера
погуглите tables selenium webdriver
polusok
(Mykhailo Poliarush)
#3
нативных средств работы с таблицами в самом вебдрайвере нету, вы можете доступаться только к элементу и неважно (для вебдрайвера), какого он типа
но для того, чтобы вам реализовать ваш код, вам нужно сделать перебор строк, ну например как это сделано на java
// Grab the table
WebElement table = driver.findElement(By.id(searchResultsGrid));
// Now get all the TR elements from the table
List<WebElement> allRows = table.findElements(By.tagName(“tr”));
// And iterate over them, getting the cells
for (WebElement row : allRows) {
List<WebElement> cells = row.findElements(By.tagName(“td”));
for (WebElement cell : cells) {
// And so on
}
}
для более удобной работы, конечно лучше же создать свой отдельный класс для работы с таблицей, который будет возбращать вам значения по ячейкам.
реализовать его не так уж сложно.
аналог кода на руби я думаю вы сможете найти.
Alex2a
(Alex2a)
#4
спасибо за ответы.
пока такое решение:
a=Array.new
# сохраняем все элементы одного столбца в массив
browser.find_elements(:xpath => "//table[@id='booktable']/tbody/tr/td[1]").each do |r|
a.push(r.text)
end
# находим индекс необходимого элемента
index = (a.index "VALUE")+1
# печатаем значение другого столбца этого ряда
puts (browser.find_element(:xpath => "//table[@id='booktable']/tbody/tr[#{index}]/td[2]").text)
А в питоне есть подобные средства для работы с таблицами в Вебдрайвере? Или придется придумывать свой велосипед?