Селен и JSF 2.0 - PullRequest
       3

Селен и JSF 2.0

4 голосов
/ 01 сентября 2011

Когда я генерирую SelectOneMenu с JSF2.0, идентификатор, указанный в xhtml, присоединяется к сгенерированному идентификатору из JSF.

например, из my_fancy_id генерируется j_idt9:my_fancy_id

Теперь я хочу протестировать свою страницу с помощью Selenium 2 Web Driver.Я пытаюсь заново найти свое меню выбора:

driver.findElement(By.id("my_fancy_id"));

Конечно, ничего не найдено, потому что идентификатор изменен.Как лучше всего найти меню выбора на странице?

Ответы [ 3 ]

6 голосов
/ 01 сентября 2011

Обычно идентификатор формы добавляется перед всеми идентификаторами элементов внутри формы. Если вы не установили идентификатор формы, JSF сделает это за вас ('j_idt9'). Решение: Присвойте идентификатор вашей форме и попробуйте использовать полный идентификатор в вашем методе findElement, например ::

<h:form id="myForm">
 ...
</h:form>

Назовите это так:

driver.findElement(By.id("myForm:my_fancy_id"));
3 голосов
/ 01 сентября 2011

или вы можете добавить , чтобы идентификатор формы не был добавлен

1 голос
/ 01 сентября 2011

Вы устанавливаете идентификатор компонента на элементах управления;средства визуализации передают в разметку идентификатор клиента .

Это позволяет JSF выдавать действительные идентификаторы HTML (они должны быть уникальными) даже при наличии шаблонов и сложных элементов управления.Элемент управления будет пространством имен любого родителя, который является NamingContainer (например, форма ).

В некоторых контейнерах идентификатор клиента будет пространством имен в представлении, но обычно это происходит только в средах с портлетами.

Некоторые библиотеки компонентов (например, Tomahawk ) имеют атрибут forceId, но при их использовании необходимо соблюдать осторожность.Я написал более обширный пост об идентификаторах клиентов здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...