Как определить, какая кнопка была нажата? - PullRequest
0 голосов
/ 15 июля 2011

У меня есть таблица с некоторыми записями (именами).У каждого имени у меня есть кнопка «редактировать».Моя проблема в том, что все кнопки редактирования имеют одинаковый идентификатор.

Знаете ли вы, как я могу нажать кнопку редактирования для 10. человека в таблице, например?

Ответы [ 3 ]

3 голосов
/ 15 июля 2011

У нас была связанная проблема с использованием Selenium, разница в том, что мы не знаем значение атрибута id для компонентов с поддержкой Ajax. Это потому, что мы используем Wicket, и в этой ситуации он генерирует динамические идентификаторы.

Я попросил Wicket добавить атрибут name и выбрать Selenium для этого атрибута вместо id.

0 голосов
/ 15 июля 2011

Прежде всего, если у вас одинаковый идентификатор для каждой кнопки, это неправильно в соответствии со спецификацией HTML.Каждый идентификатор должен быть уникальным для страницы.Вам, вероятно, следует удалить идентификатор, если вы не можете сделать его уникальным.

То, что вам нужно, звучит так, как будто это может быть достигнуто с помощью XPATH.

Например, вы можете использовать что-то вроде:

//table[@class='myTableClass']/tr[10]/td[4]/input

Если вы ищете определенное значение, вы можете использовать «содержит»:

//table[@class='myTableClass']//td[contains(., 'ABC')]../td[5]

Для этого нужно выполнить поиск ячейки таблицы со значением ABC, затем выбрать родителя этой ячейки (строки), а затем выбрать 5-ю ячейку этой строки.С Xpath вы можете многое сделать.

Для получения дополнительной информации по Xpath см., Например, Учебник по Xpath здесь .

0 голосов
/ 15 июля 2011

Вы можете использовать селекторы CSS и использовать атрибут nth-child. Например, на главной странице stackoverflow вы можете выбрать второй вопрос с помощью следующего селектора CSS:

.container .question-summary:nth-child(2)

Вы также можете использовать XPath. XPath для того же элемента будет:

//div[@class='question-summary']/div[2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...