Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как работает richfaces pick list? или как это отследить? 
:(
    Опции темы
Forza
Дата 30.6.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: 1
Всего: 2



В библиотеке RichFaces присутствует так называемый Pick List - управляющий блок, состоящий из двух списков и позволяющий перемещать элементы из левого списка в правый и обратно. См. его описание тут - http://livedemo.exadel.com/richfaces-demo/...t&tab=usage .
Несмотря на внешнюю простоту, внутри себя пик-лист содержит сложную структуру из вложенных слоёв и таблиц. Притом каких-либо явных обработчиков событий в HTML-коде нет.

Моя задача - с помощью Селениума выбрать элемент в левом списке, чтобы затем с помощью кнопки Copy скопировать его в правый.
Вручную всё работает тривиально: кликаешь на элементе в левом списке - кнопка Copy активируется, затем нажимаешь на неё, и элемент копируется в правый список.

Если же кликать селениумом (DefaultSelenium.click()), то элемент выделится только в том случае, если курсор мышки находится над тем фреймом, в котором находится тестируемая страница (в другом фрейме - данные от селениума) - в обратном случае click() не вызывает исключений (т.е. xpath валидный), но и элемент не выделится. Использование перед вызовом click() различных методов, позволяющих передать фокус на пик-лист (focus(), mouseOver(), mouseMove()), не помогло. Также не сработала попытка изменять вручную значения хидденов, которые поштучно имеются у каждого элемента списка, и которые изменяются при ручном клике на элементе.

Поэтому у меня есть несколько разных вопросов:
  •  Может, кто-либо сразу может сказать, как работает этот конкретный RichFaces Pick List? Т.е. какое именно событие срабатывает на каком именно элементе для выделения элемента списка?
  •  Посоветуйте какой-нибудь тул, который позволяет отследить работу JavaScript - т.е. чтобы после клика на элементе тул показал, какое событие сработало на каком элементе?
  •  Пик-лист создаётся как безымянный объект JavaScript следующим кодом. Могу ли я к нему как-нибудь обратиться джаваскриптом, чтобы напрямую вызвать тот метод, который должен выделять элемент по клику на нём? Если могу, то как адресовать этот безымянный объект?


Код

<script type="text/javascript">var clientId = 'j_id352';
new Richfaces.PickList(
    new Richfaces.PickList.Target('j_id352', 'j_id352tlInternal_tab', 'j_id352tlInternal_header_tab', 'j_id352tlFocusKeeper', 
undefined, Richfaces.PickList.Target.SelectItem, null, null),
    new Richfaces.PickList.Source('j_id352', 'j_id352internal_tab', 'j_id352internal_header_tab', 'j_id352focusKeeper', 
undefined, Richfaces.PickList.Source.SelectItem, null, null), 
    "j_id352", 
    [['copy', 'discopy'], ['copyAll', 'discopyAll'], ['remove', 'disremove'], ['removeAll','disremoveAll']],
    "false", 
    "true", 
    {onlistchanged: null,
     onlistchange: null,
     onfocus:null,
     onblur:null
    },
    "j_id352valueKeeper");</script>


В HTML сам пик-лист выглядит следующим образом.

Код

<table id="j_id352" class="rich-list-picklist" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div class="rich-picklist-source-items">
<input id="j_id352focusKeeper" type="button" style="width: 1px; position: absolute; left: -32767px;"/>
<table id="j_id352table" class="rich-picklist-body" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: 0px none ; padding: 0px;">
<div id="j_id352headerBox" class="rich-picklist-list">
<div id="j_id352contentBox" class="rich-picklist-list-content" style="width: 140px; height: 140px;">
<table id="j_id352internal_tab" class="rich-picklist-internal-tab" cellspacing="0" cellpadding="0" style="width: 100%;">
<tbody id="j_id352tbody">
<tr id="j_id352:source::0" class="rich-picklist-source-row">
<td class="rich-picklist-source-cell">
<img style="width: 1px; height: 1px;" alt=" " src="/richfaces-demo/a4j/g/3_3_1.GAorg/richfaces/renderkit/html/images/spacer.gif.jsf"/>
Option 1
<input id="j_id352:source::0StateInput" type="hidden" value="1" name="j_id352:source::0"/>
</td>
</tr>
<tr id="j_id352:source::1" class="rich-picklist-source-row">
<td class="rich-picklist-source-cell">
<img style="width: 1px; height: 1px;" alt=" " src="/richfaces-demo/a4j/g/3_3_1.GAorg/richfaces/renderkit/html/images/spacer.gif.jsf"/>
Option 2
<input id="j_id352:source::1StateInput" type="hidden" value="2" name="j_id352:source::1"/>
</td>
</tr>
<tr id="j_id352:source::2" class="rich-picklist-source-row">
<td class="rich-picklist-source-cell">
<img style="width: 1px; height: 1px;" alt=" " src="/richfaces-demo/a4j/g/3_3_1.GAorg/richfaces/renderkit/html/images/spacer.gif.jsf"/>
Option 3
<input id="j_id352:source::2StateInput" type="hidden" value="3" name="j_id352:source::2"/>
</td>
</tr>
<tr id="j_id352:source::3" class="rich-picklist-source-row">
<td class="rich-picklist-source-cell">
<img style="width: 1px; height: 1px;" alt=" " src="/richfaces-demo/a4j/g/3_3_1.GAorg/richfaces/renderkit/html/images/spacer.gif.jsf"/>
Option 4
<input id="j_id352:source::3StateInput" type="hidden" value="4" name="j_id352:source::3"/>
</td>
</tr>
<tr id="j_id352:source::4" class="rich-picklist-source-row">
<td class="rich-picklist-source-cell">
<img style="width: 1px; height: 1px;" alt=" " src="/richfaces-demo/a4j/g/3_3_1.GAorg/richfaces/renderkit/html/images/spacer.gif.jsf"/>
Option 5
<input id="j_id352:source::4StateInput" type="hidden" value="5" name="j_id352:source::4"/>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
</tbody>
</table>


Заранее благодарю.
Я уже два дня с этим тр@хаюсь.  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.