идентификаторы элементов WebSharper

Мы планируем использовать WebSharper для нашего веб-интерфейса. Проблема в том, что наши интеграционные тесты основаны на селене и используют идентификаторы элементов страницы для нажатия и заполнения данных.
По этой причине нам нужно указать идентификаторы для всех соответствующих элементов на странице.

Для элементов, не являющихся формами, мы можем сделать это: A [HRef (ctx.Link Home)] -‹ [Text "Home"] -‹ [Id "home"]

Как мы можем сделать это для полей ввода внутри формлета?

Спасибо

ОБНОВЛЕНИЕ: В итоге мы решили не использовать формлеты websharper. Одна из причин заключается в том, что мы не можем назначать идентификаторы элементам формы, и поэтому наш метод тестирования больше не работает. Другая причина — табличная компоновка, которая плохо вписывается в наш дизайн. Мы по-прежнему будем использовать websharper, но без библиотеки формлетов.


person vidi    schedule 13.08.2012    source источник
comment
Я почти уверен, что поля ввода получают свой собственный случайный идентификатор из библиотеки формлетов на основе JS. Вы должны использовать JQuery API WebSharper, чтобы выбрать его (не по идентификатору, а по предоставлению элемента Formlet).   -  person Ramon Snir    schedule 13.08.2012
comment
Формлеты на основе таблиц — настоящая проблема. Я поднял ошибку для этого с intellifactory 12 месяцев назад. Возможно, их нужно слегка подтолкнуть :) выпуск/9/   -  person Oenotria    schedule 23.12.2012


Ответы (1)


Почему вам явно нужно использовать идентификаторы для тестов селена? Я уверен, что вы это знаете, но я поставлю ссылку http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/By.html.

Из моего xp xpath более надежен, чем id, и я видел страницы, на которых было много одинаковых идентификаторов (хотя я очищал дикую сеть, а не внутреннее приложение :-))

person borkdorkfork    schedule 14.08.2012
comment
Наши тесты написаны на Python и выглядят следующим образом: ... session.User_Create.click() session.Name.text=someuser session.DisplayName.text=некоторое отображаемое имя пользователя session.Password.text=somepass session.Save.click () Это достигается за счет тонкого слоя над селеном. Изменение их для использования xpath, вероятно, потребует много работы, и они не будут выглядеть так чисто. Одинаковые идентификаторы на одной странице — это не тот случай, потому что существующий пользовательский интерфейс был написан для поддержки этого метода тестирования. - person vidi; 15.08.2012