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

Фотография

Помогите отметить чекбокс на странице


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

#1 Tail

Tail

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

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Галина Шарапова
  • Город:Москва

Отправлено 20 июля 2011 - 11:03

Добрый день.

Селениум использую пару дней. Поставили задачу по автоматизации тестов на работе.
Сама разобраться не могу, поэтому сюда написала.

Изображение

Есть табличка, каждая строка начинается с чекбокса.
Задача - написать тест который удаляет компанию.
Шаги - отметить чекбокс компании которую надо удалить. Нажать кнопку - Удалить отмеченное.
Согласиться в окошке подтверждения удаления.
Проверить есть ли на странице текст с названием удаленной компании.

У чекбокса постоянно id меняется. Я хочу привязаться к имени компании, то есть выбирать тот чекбокс, который соответствует нужной компании. Если я кликну на саму компанию ( на название), я проваливаюсь в ее редактирование. Имя компании - ссылка.

Код строки в таблице.
В данный конкретный момент нужный мне чекбокс имеет id="id84d"
Но если я пересоздам компанию - id поменяется, мне не хочется к нему привязываться, нужно именно по имени компании NewCompany2 например.

<tr class="odd" onmouseover="this.className = 'selected';" onmouseout="this.className = 'odd';">
<td class="first">
<span>
<input type="checkbox" id="id84d" name="checkGroup" value="check2731" class="wicket-id409"/>
</span>
</td><td>
<span>
<a href="?x=zmwwhvTRofcvGNBBUoyBvQ">

NewCompany2

</a>

</span>
</td><td>


1231231

</td><td>


r1

</td><td class="last">
<span>
<a href="?x=zmwwhvTRofdY39WOdyJJAw">Выбрать</a>
</span>
</td>
</tr>


  • 0

#2 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 20 июля 2011 - 11:27

Можно через regexp

я код не тестировал, но должно быть что-то вроде:
selenium.click("id=regexp:[<td]*(id[a-z0-9]+)[NewCompany2]*[</td>]");

это должен быть клик по чекбоксу рядом с компанией NewCompany2

Если с регулярными выражениями не знакомы
http://javascript.ru...ular-expression
http://gskinner.com/RegExr/
  • 0

#3 horhe

horhe

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

  • Members
  • PipPip
  • 100 сообщений
  • ФИО:Юрко
  • Город:Kraków

Отправлено 20 июля 2011 - 12:45

если не дружны с регулярками можно по XPath попробовать. будет что-то вроде клика вот сюда //*[contains (@id,'id') and (@type='checkbox')][n] , где n - номер чекбокса который вы хотите отметить, если без этого параметра - отметит первый элемент какой попадется типа checkbox у которого id будет содержать "id"
  • 0
Piobaireachd isn't mysterious, difficult or hard - it's just music...

#4 Leoxa

Leoxa

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

  • Members
  • Pip
  • 59 сообщений
  • ФИО:Алексей

Отправлено 20 июля 2011 - 14:45

для xpath будет примерно так:
selenium.click("xpath=//td[contains(.,'1231231')]/..//input");
расшифровка: находим ячейку с названием компании, переходим к первому "родителю" этой ячейки (в нашем случае родительским элементом для ячейки будет строка таблицы - tr) и в нем ищем элемент нужного типа (например, input).
  • 0

#5 Tail

Tail

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

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Галина Шарапова
  • Город:Москва

Отправлено 21 июля 2011 - 05:37

Спасибо! Попробую
Вчера оказалось проще дернуть программистов, чтоб они перезалили сборку в дебаг режиме, где присутствует wicketpath, по нему и получилось сделать. Но вариант с Xpath еще пригодится.
  • 0

#6 mzzz

mzzz

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Ольга
  • Город:Харьков

Отправлено 21 июля 2011 - 10:53

Вот как еще можно сделать с помощью XPath:

click | //table[@id="tab_id"]/tr[td[2]/span/a='"Рога и копыта"']/td[1]/span/input

где tr[td[2]/span/a='Рога и копыта'] - строка, в которой столбец [2], в котором текст - ссылка (/a) равен "Рога и копыта".
  • 0

#7 notProgrammer

notProgrammer

    Постоянный участник

  • Members
  • PipPipPip
  • 199 сообщений
  • Город:Харьков

Отправлено 21 июля 2011 - 13:07

Здравствуйте!
Я сама не эксперт в Селениуме. Но если Вы пересоздадите компанию, потом сделаете storeValue для айдишника этого чекбокса, а уже потом выберете его, привязавшись к сохранённому результату?
  • 0
- Как называется человек, который любит смотреть на страдания других?
- Программист.

У тестировщика всегда чётное количество синяков: если он наступил на грабли - обязан воспроизвести ошибку.
(bash.org)

#8 astenix

astenix

    Специалист

  • Members
  • PipPipPipPipPip
  • 906 сообщений
  • ФИО:Лёша Лупан
  • Город:Кишинев


Отправлено 21 июля 2011 - 14:46

Пример решения проблемы - http://siderulezzz.w.../2011/03/17/12/
  • 0

Software Testing Glossary - простыми словами о непростых словах.



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

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