Повисает метод OnLinkClick()
#1
Отправлено 01 февраля 2011 - 13:52
По моим предположениям это происходит потому, что ему (методу) становится недоступена форма от которой было вызвано контекстное меню, т.к. над формой нависает появившееся окошко и делает форму недоступной. Далее поток выполнения скрипта нельзя затормозить кнопкой стоп, скрипт останавливается только после закрытия появившегося окна.
Пробовал даже асинхронно запускать данный метод вот таким макаром - Runner.CallObjectMethodAsync(PopUp.VisibleLinks.Item(i-1), "OnLinkClick"), но это тоже не принесло результатов. Если после асинхронного запуска этого метода вызывать Runner.Stop(), то он как я понимаю тормозит только текущий поток, а другой остается жить и ждет отклика от формы, которая недоступна.
Подскажите пожалуйста, может есть способ убить все потоки? :)
#2
Отправлено 01 февраля 2011 - 15:08
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#3
Отправлено 02 февраля 2011 - 07:34
TestComplete 7.10инструмент?
#4
Отправлено 08 февраля 2011 - 09:46
Для этого можно использовать обработчик OnUnexpectedWindow
#5
Отправлено 08 февраля 2011 - 10:11
мешает метод OnLinkClick() :)а что мешает после метода OnLinkClick() сделать проверку, появилось ли окно или нет, если появилось - закрыть его и продолжать использовать OnLinkClick().
Для этого можно использовать обработчик OnUnexpectedWindow
ибо он не завершается и вызывать что-либо после него бесполезно, т.к. поток не идет дальше строчки где вызывался этот метод
#6
Отправлено 08 февраля 2011 - 14:32
#7
Отправлено 08 февраля 2011 - 14:42
var sItem
var PopUp = plateRegistration.SubMenuControlForm.PopupMenuBarControl
// first item
while (sItem1 != sItem){
try{
sItem = PopUp.VisibleLinks.Item(i).Caption
i++
}
catch(e){
Log.Error("QA: '"+sItem1+"' doesn't exist in PopUp menu!")
return
}
}
//second item
if(sItem2 != null){
var j = 0
PopUp.VisibleLinks.Item(i-1).OpenMenu
while (sItem2 != sItem){
try{
sItem = PopUp.VisibleLinks.Item(i-1).VisibleLinks.Item(j).Caption
j++
}
catch(e){
Log.Error("QA: '"+sItem2+"' doesn't exist in '"+sItem1+"' menu!")
return
}
}
//third item
if(sItem3 != null){
var h = 0
PopUp.VisibleLinks.Item(i-1).VisibleLinks.Item(j-1).OpenMenu
while (sItem3 != sItem){
try{
sItem = PopUp.VisibleLinks.Item(i-1).VisibleLinks.Item(j-1).VisibleLinks.Item(h).Caption
h++
}
catch(e){
Log.Error("QA: '"+sItem3+"' doesn't exist in '"+sItem2+"' menu!")
return
}
}
PopUp.VisibleLinks.Item(i-1).VisibleLinks.Item(j-1).VisibleLinks.Item(h-1).OnLinkClick()
}
else{
PopUp.VisibleLinks.Item(i-1).VisibleLinks.Item(j-1).OnLinkClick()
}
}
else{
PopUp.VisibleLinks.Item(i-1).OnLinkClick()
}
в принципе решил проблему с помощью фокусировки на нужном элементе и нажатием клавиши Enter, может быть есть альтернатива?
#8
Отправлено 09 февраля 2011 - 12:06
мешает метод OnLinkClick() :)
а что мешает после метода OnLinkClick() сделать проверку, появилось ли окно или нет, если появилось - закрыть его и продолжать использовать OnLinkClick().
Для этого можно использовать обработчик OnUnexpectedWindow
ибо он не завершается и вызывать что-либо после него бесполезно, т.к. поток не идет дальше строчки где вызывался этот метод
чтото я не пойму..что вообще делает метод OnLinkClick() кроме как кликает по пункту меню?
#9
Отправлено 09 февраля 2011 - 12:11
ничего)
мешает метод OnLinkClick() :)
а что мешает после метода OnLinkClick() сделать проверку, появилось ли окно или нет, если появилось - закрыть его и продолжать использовать OnLinkClick().
Для этого можно использовать обработчик OnUnexpectedWindow
ибо он не завершается и вызывать что-либо после него бесполезно, т.к. поток не идет дальше строчки где вызывался этот метод
чтото я не пойму..что вообще делает метод OnLinkClick() кроме как кликает по пункту меню?
в принципе можно закрыть тему, ибо я нашел выход из этой ситуации путем фокусировки на элементе и нажатием Enter - в этом случае проблем нет.
PopUp.VisibleLinks.Item(i-1).VisibleLinks.Item(j-1).Focus
PopUp.Keys("[Enter]")
всем спасибо за внимание)
#10
Отправлено 10 февраля 2011 - 06:47
Проблема явно вызвана синхронным вызовом метода OnLinkClick. Не понятно почему Вам не помог асинхронный вызов - возможно, Вы что-то не так делали.
Дмитрий
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных