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

Фотография

QTP 9.x, работа с DOM-элементами: отличие в работе в сравнении с QTP-о


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

#1 gralex

gralex

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

  • Members
  • Pip
  • 52 сообщений
  • ФИО:Груба Алексей

Отправлено 16 сентября 2009 - 07:33

Всем привет,

Давно мучил один вопрос, а теперь вот появилась реальная необходимость его решения (довольно болезненная необходимость надо сказать).
Работаю с web-элементами через native-интерфейс (через .object) и столкнулся с проблемами в случае, когда на элементе повешены какие-то события. Пример:
http://www.w3schools...yjsref_onchange
Browser("title:=.*").Page("title:=.*").WebEdit("html id:=fname").Set "test"
Browser("title:=.*").Page("title:=.*").WebEdit("html id:=fname").object.value = "test"

Оба эти фрагмента в принципе делают одно и то же - устанавливают значение в эдит, но при вызове метода Set объекта WebEdit кроме установки значения еще вызываются какие-то события для соответвующего DOM-элемента (в этом случае вероятно, что вызывается еще и событие onChange). В данном тестовом примере проблема решается добавлением во втором коде еще вызова fireEvent("onchange") на эдите.

Вопрос более глобальный: что, помимо собственно самих действий (клика, установки и выбора значения), выполняется в таких методах объектов QTP как click(), set(), select() и прочих?
(вероятно, что файрятся события - но все ли или для каждого конкретного объекта свои?, что кроме событий)


P.S. Из истории вопроса: есть выпадающий список, на котором повешено событие onChange - применение для выбора элемента метода Select объекта WebList полностью повторяет реакцию системы на ручные действия пользователя (делается видимым определенный набор контролов на форме), выбор же значения через DOM с дальнейшим вызовом fireEvent("onchange") для элемента "<SELECT>" вызывает только "частичную" реакцию (некоторые из появившихся контролов имеют изменившийся контент).
Каких-либо "заморочек" по исходному коду страницы не нашел, теперь пытаюсь подкопаться со стороны QTP - у него ведь как-то получается все сделать правильно! :)
  • 0

#2 ch_ip

ch_ip

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

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 16 сентября 2009 - 16:59

Всем привет,
Вопрос более глобальный: что, помимо собственно самих действий (клика, установки и выбора значения), выполняется в таких методах объектов QTP как click(), set(), select() и прочих?
(вероятно, что файрятся события - но все ли или для каждого конкретного объекта свои?, что кроме событий)


P.S. Из истории вопроса: есть выпадающий список, на котором повешено событие onChange - применение для выбора элемента метода Select объекта WebList полностью повторяет реакцию системы на ручные действия пользователя (делается видимым определенный набор контролов на форме), выбор же значения через DOM с дальнейшим вызовом fireEvent("onchange") для элемента "<SELECT>" вызывает только "частичную" реакцию (некоторые из появившихся контролов имеют изменившийся контент).
Каких-либо "заморочек" по исходному коду страницы не нашел, теперь пытаюсь подкопаться со стороны QTP - у него ведь как-то получается все сделать правильно! :)

Как реально реализовано в QTP я не знаю, и не знаю, где это можно посмотреть, так как в справке и документации у них ничего по этому поводу я не встречал.
У нас при работе через DOM выбор из списка, на который навешан JS, успешно имитируется следующей последовательностью:
domListObj.Focus
domListObj.Click
'domListObj.FireEvent "onclick"   
domListObj.selectedIndex = i
'domListObj.FireEvent "onblur"   'Это событие соответствует потери фокуса контролом
domListObj.FireEvent "onchange"
domListObj.blur
В приведенном коде есть две закомментированные строки. В принципе, можно реализовать все только через отправку событий, но поскольку есть домовские методы, соответствующие этим событиям, я предпочел использовать непосредственно их. События, отправка которых закомментирована, отправляются и JS отрабатывает.
  • 0


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

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