Давно мучил один вопрос, а теперь вот появилась реальная необходимость его решения (довольно болезненная необходимость надо сказать).
Работаю с 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 - у него ведь как-то получается все сделать правильно! :)