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

Фотография

Повисает метод OnLinkClick()


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

#1 Lexa St

Lexa St

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

  • Members
  • Pip
  • 8 сообщений

Отправлено 01 февраля 2011 - 13:52

Кликаю элементы PopUp меню таким макаром - PopUp.VisibleLinks.Item(i).OnLinkClick(), ибо простого метода Click() у данного объекта нет. Но если после клика на элемент контекстного меню появляется какое-нить окошко с подтверждением действия, являющееся дочерним для формы, от которой было вызвано контекстное меню, то метод OnLinkClick() повисает.

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

Пробовал даже асинхронно запускать данный метод вот таким макаром - Runner.CallObjectMethodAsync(PopUp.VisibleLinks.Item(i-1), "OnLinkClick"), но это тоже не принесло результатов. Если после асинхронного запуска этого метода вызывать Runner.Stop(), то он как я понимаю тормозит только текущий поток, а другой остается жить и ждет отклика от формы, которая недоступна.
Подскажите пожалуйста, может есть способ убить все потоки? :)
  • 0

#2 ch_ip

ch_ip

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

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


Отправлено 01 февраля 2011 - 15:08

инструмент?
  • 0

#3 Lexa St

Lexa St

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

  • Members
  • Pip
  • 8 сообщений

Отправлено 02 февраля 2011 - 07:34

инструмент?

TestComplete 7.10
  • 0

#4 XXX

XXX

    Опытный участник

  • Members
  • PipPipPipPip
  • 284 сообщений
  • ФИО:Денис Викторович
  • Город:Санкт-Петербург


Отправлено 08 февраля 2011 - 09:46

а что мешает после метода OnLinkClick() сделать проверку, появилось ли окно или нет, если появилось - закрыть его и продолжать использовать OnLinkClick().
Для этого можно использовать обработчик OnUnexpectedWindow
  • 0

#5 Lexa St

Lexa St

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

  • Members
  • Pip
  • 8 сообщений

Отправлено 08 февраля 2011 - 10:11

а что мешает после метода OnLinkClick() сделать проверку, появилось ли окно или нет, если появилось - закрыть его и продолжать использовать OnLinkClick().
Для этого можно использовать обработчик OnUnexpectedWindow

мешает метод OnLinkClick() :)
ибо он не завершается и вызывать что-либо после него бесполезно, т.к. поток не идет дальше строчки где вызывался этот метод
  • 0

#6 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 08 февраля 2011 - 14:32

Запостите сюда скрипт, который вы используете.
  • 0

#7 Lexa St

Lexa St

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

  • Members
  • Pip
  • 8 сообщений

Отправлено 08 февраля 2011 - 14:42

var e, i = 0
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, может быть есть альтернатива?
  • 0

#8 XXX

XXX

    Опытный участник

  • Members
  • PipPipPipPip
  • 284 сообщений
  • ФИО:Денис Викторович
  • Город:Санкт-Петербург


Отправлено 09 февраля 2011 - 12:06


а что мешает после метода OnLinkClick() сделать проверку, появилось ли окно или нет, если появилось - закрыть его и продолжать использовать OnLinkClick().
Для этого можно использовать обработчик OnUnexpectedWindow

мешает метод OnLinkClick() :)
ибо он не завершается и вызывать что-либо после него бесполезно, т.к. поток не идет дальше строчки где вызывался этот метод


чтото я не пойму..что вообще делает метод OnLinkClick() кроме как кликает по пункту меню?
  • 0

#9 Lexa St

Lexa St

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

  • Members
  • Pip
  • 8 сообщений

Отправлено 09 февраля 2011 - 12:11



а что мешает после метода OnLinkClick() сделать проверку, появилось ли окно или нет, если появилось - закрыть его и продолжать использовать OnLinkClick().
Для этого можно использовать обработчик OnUnexpectedWindow

мешает метод OnLinkClick() :)
ибо он не завершается и вызывать что-либо после него бесполезно, т.к. поток не идет дальше строчки где вызывался этот метод


чтото я не пойму..что вообще делает метод OnLinkClick() кроме как кликает по пункту меню?

ничего)

в принципе можно закрыть тему, ибо я нашел выход из этой ситуации путем фокусировки на элементе и нажатием Enter - в этом случае проблем нет.
PopUp.VisibleLinks.Item(i-1).VisibleLinks.Item(j-1).Focus
PopUp.Keys("[Enter]")
всем спасибо за внимание)
  • 0

#10 Dmitry N

Dmitry N

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

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 10 февраля 2011 - 06:47

Здравствуйте.

Проблема явно вызвана синхронным вызовом метода OnLinkClick. Не понятно почему Вам не помог асинхронный вызов - возможно, Вы что-то не так делали.
  • 0
С уважением,
Дмитрий


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

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