Перейти к содержимому

Фотография

Как достать все эелементы из таблицы?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 19

#1 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 07:16

Есть такая проблема. Есть таблица с данными, с помощью SQL запроса я получаю данные из БД. С помощью Селениума я хочу получить то, что выдается на экране, что-бы потом сравнить. Есть ли такая возможность? VerifyBody и verifyTable не помогают(((
  • 0

#2 snark

snark

    Новый участник

  • Members
  • Pip
  • 62 сообщений

Отправлено 24 октября 2011 - 07:59


  • 0

#3 snark

snark

    Новый участник

  • Members
  • Pip
  • 62 сообщений

Отправлено 24 октября 2011 - 07:59

А по подробнее? Какой язык приложения, на каком написанны тесты?
Так на вскидку могу посоветовать загружать в тест массив из бызы и потом в цииклах сравнивать с ячеиками таблицы HTML.
for x
for y
assertEquals(selenium.getTable("//table.x.y"), data[x][y]);
  • 1

#4 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 08:02

язык - python.
Кстати, за getTable огромное спасибо, то что нужно! Единственное, так и не понял как определять адресс и имя таблицы, черех xptah?)
  • 0

#5 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 08:27

хоть бы для приличия дали ссылку на страницу или запостили бы html-код таблицы - иначе точнее и не посоветуешь
  • 1
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#6 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 08:29

<td id="system_components" colspan="2" style="padding: 0px; border: 0px;">
<table class="block inside_tab" width="100%" cellspacing="0" cellpadding="0" style="width: 100%; border: 0px;">
<tbody id="system_components">
<tr class="subtable sortable">
<tr class="subtable filter">
<tr>
<td class="pages" style="text-align: left; padding-left: 30px; border-width: 0px 0px 1px 0px; padding-top: 6px;" colspan="44">
<nobr>
</td>
</tr>
<tr class="subtable">
<td>1</td>
<td>_BigMak</td>
  • 0

#7 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 08:29

вот путь до одной из ячеек. Саму страницу жать не могу(((
  • 0

#8 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 08:34

пример на Java
String cell_xy = selenium.getText("//table/tbody[@id='system_components']/tr["+X+"]/td["+Y+"]");

  • 1
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#9 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 08:37

а через getTable? Пишу на питоне. Просто не понимаю как формировать адрес строки и столбца
  • 0

#10 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 08:41

через getTable будет не проще, т.к. у таблицы нет ни ID, ни name - придется городить сложный локатор. А смысл у команды такой же как и у getText
  • 1
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#11 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 08:44

ага, понятно, а можно для локатора getText использовать Xpath?
  • 0

#12 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 08:47

а я какой локатор выше написал? :)
  • 1
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#13 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 08:51

а, ну да) я просто xpathCheck юзаю. особо не смотрел))
Спасибо большое
  • 0

#14 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 14:24

Появилась новая проблема. Как, с помощью Селениума, можно "подсчитать" количество столбцов и строк? Просто таблица может расширятся. Думаю, что каким-то образом через xpath, а вот как - не знаю. Подскажите пожалуйста
  • 0

#15 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 14:47

для этого есть метод
selenium.getXPathCount("//xpath/locator");

  • 1
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#16 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 14:51

угу, уже юзаю. Подскажите пожалуйста мануальчик по формированию xpath локатора, а то xpath checker не дает Фулл инфы
  • 0

#17 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 15:08

Я, честно говоря, не встречал толковой утилиты для формирования xpath-локаторов. Пришлось изучать базу по XPath и почти все локаторы вручную писать - оно так быстрее и надежнее получается.
Могу посоветовать такой вот подсказник по селекторам для Selenium:

http://www.simple-ta...-rosetta-stone/

Ну, а для проверки написанного локатора использую расширение для Firefox под названием Firefinder (плагин Firebug)
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#18 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 15:13

Угу, плагин нашел такой, помогает. Честно говоря табличка тут та еще. Дело в том, что в первых tr строках содержатся колонки th, которые никакой толковой инфы нам не дают, нужны именно tr и th. Проблема в том, как бы их посчитать. Если просто так sel.get_xpath_count(".//*[@id='system_components']/tr[.]/td[.]") - то на выходе дается произведение колва- tr и td. Если отдельно запросить кол-во tr sel.get_xpath_count(".//*[@id='system_components']/tr[.] - то посчитает колво строк tr, а если так sel.get_xpath_count(".//*[@id='system_components']/td[.] то количество столбцов td = 0. Конечно как вариант написать что колво td=общие вол-во \ кол-во tr. Но по-моему - это глупо)) Просто новичек в этих делах и особенно не разобрался еще.
  • 0

#19 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 24 октября 2011 - 15:35

Ну, когда освоишься с XPath, такие вопросы отпадут :)

Смотри, считаем кол-во строк, без учета шапки таблицы:
selenium.getXPathCount("//table/tbody[@id='system_components']/tr[not(th)]");
Считаем кол-во столбцов в нормальной строке:
selenium.getXPathCount("//table/tbody[@id='system_components']/tr[not(th)][1]/td");

  • 2
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#20 Rinss

Rinss

    Новый участник

  • Members
  • Pip
  • 66 сообщений

Отправлено 24 октября 2011 - 15:39

жаль колчество плюсов в день ограничено. Спасибо огромное, ты мне невероятно сильно помог))) А то я уже арифметикой начал вычислять))) Спасибо огромное!!!!!
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных