ComboBox в FoxPro приложении
#1
Отправлено 02 сентября 2008 - 13:39
При тестировании фоксового приложения возникла следующая проблема:
- При записи действий (выбор элемента в комбобоксе) TC записал в скрипте только щелчки по координатам.
В ObjectBrowser'e комбобокс описывается как ["MSAAObject"]("combo_box_AcomboPeriod") с вложеными в него ["MSAAObject"]("list_item"). question.JPG 211,49К 65 Количество загрузок:
Можно ли как-нибудь выбрать определенный list_item ? И если да, то как?
TestComplete 6, C++ script
Visual FoxPro 8
#2
Отправлено 03 сентября 2008 - 09:03
была такая же проблема решил так:
paxCount = lug.ChildCount
For i=0 to paxCount-1
if InStr(1, lug.Child(i).Name, "cbont") then
Log.Message (lug.Child(i).Name)
call lug.Child(i).ClickItem(Int(5 * Rnd))
end if
Next
#3
Отправлено 03 сентября 2008 - 09:56
Я могу алгоритм написать.а что есть в properties?
была такая же проблема решил так:
paxCount = lug.ChildCount
For i=0 to paxCount-1
if InStr(1, lug.Child(i).Name, "cbont") then
Log.Message (lug.Child(i).Name)
call lug.Child(i).ClickItem(Int(5 * Rnd))
end if
Next
Создается функция с 2-мя параметрами - дескриптор комбобокса и значение, кот.необходимо выбрать.
Сама функция выполняет след.действия:
1) определяем значение ChildCount (кол-во выпадающих значений комбобокса)
2) делаем цикл по ChildCount
3) сравниваем значение входящего параметра функции с параметром Value (или AName) свойства Properties объекта. Если значение равно, то выходим из цикла и кликаем на это значение. Если условие не выполняется, берем следующий элемент.
#4
Отправлено 03 сентября 2008 - 10:16
А какая именно версия TestComplete 6? Если не последняя (6.40), попробуйте последнюю.
Дмитрий
#5
Отправлено 03 сентября 2008 - 13:04
Я могу алгоритм написать.а что есть в properties?
была такая же проблема решил так:
paxCount = lug.ChildCount
For i=0 to paxCount-1
if InStr(1, lug.Child(i).Name, "cbont") then
Log.Message (lug.Child(i).Name)
call lug.Child(i).ClickItem(Int(5 * Rnd))
end if
Next
Создается функция с 2-мя параметрами - дескриптор комбобокса и значение, кот.необходимо выбрать.
Сама функция выполняет след.действия:
1) определяем значение ChildCount (кол-во выпадающих значений комбобокса)
2) делаем цикл по ChildCount
3) сравниваем значение входящего параметра функции с параметром Value (или AName) свойства Properties объекта. Если значение равно, то выходим из цикла и кликаем на это значение. Если условие не выполняется, берем следующий элемент.
НАХ твой алгоритм тут и так все понятно :)
#6
Отправлено 03 сентября 2008 - 13:21
а что есть в properties?
была такая же проблема решил так:
paxCount = lug.ChildCount
For i=0 to paxCount-1
if InStr(1, lug.Child(i).Name, "cbont") then
Log.Message (lug.Child(i).Name)
call lug.Child(i).ClickItem(Int(5 * Rnd))
end if
Next
В properties property.JPG 106,12К 45 Количество загрузок:
ClickItem не проходит. Появляется ошибка Unable to find the object ClickItem(1).
Я могу алгоритм написать.
Создается функция с 2-мя параметрами - дескриптор комбобокса и значение, кот.необходимо выбрать.
Сама функция выполняет след.действия:
1) определяем значение ChildCount (кол-во выпадающих значений комбобокса)
2) делаем цикл по ChildCount
3) сравниваем значение входящего параметра функции с параметром Value (или AName) свойства Properties объекта. Если значение равно, то выходим из цикла и кликаем на это значение. Если условие не выполняется, берем следующий элемент.
3) сравниваем значение входящего параметра функции с параметром Value (или AName) свойства Properties объекта. Если значение равно, то выходим из цикла и кликаем на это значение. вот именно здесь и проблема, не получается кликнуть по определенному значению. По крайней мере метод ["Click"] не проходит, а ["ClickItem"] вообще отсутствует в списке методов, и при попытке вызвать его появляется соответствубщая ошибка...
Здравствуйте.
А какая именно версия TestComplete 6? Если не последняя (6.40), попробуйте последнюю.
Версия 6.40.344.3
#7
Отправлено 04 сентября 2008 - 03:17
А что именно происходит при попытке вызвать метод Click?вот именно здесь и проблема, не получается кликнуть по определенному значению. По крайней мере метод ["Click"] не проходит
Дмитрий
#8
Отправлено 04 сентября 2008 - 13:59
Здравствуйте.
А что именно происходит при попытке вызвать метод Click?вот именно здесь и проблема, не получается кликнуть по определенному значению. По крайней мере метод ["Click"] не проходит
Не происходит вообще ничего. Выбранное значение в combobox остаётся таким же, что и до вызова ["Click"].
#9
Отправлено 05 сентября 2008 - 15:44
А в логе что? Ошибки есть?
Дмитрий
#10
Отправлено 05 сентября 2008 - 21:03
В логе ошибок нет.
#11
Отправлено 06 сентября 2008 - 15:30
А хоть что-нибудь там есть?
Дмитрий
#12
Отправлено 08 сентября 2008 - 13:21
А хоть что-нибудь там есть?
Есть. В ответ на
combo_box["MSAAObject"]("list_item__2")["Click"]();
в логе появляется строка :
The window was clicked with the left mouse button. Normal 17:17:34
#13
Отправлено 09 сентября 2008 - 03:56
Попробуйте этот код:
... myClick(combo_box["MSAAObject"]("list_item__2")); ... function myClick(obj) { var x = obj.ScreenLeft + obj.Width / 2; var y = obj.ScreenTop + obj.Height / 2; Sys.Desktop.MouseDown(VK_LBUTTON, x, y); Sys.Desktop.MouseUp(VK_LBUTTON, x, y); }
Дмитрий
#14
Отправлено 09 сентября 2008 - 11:24
... myClick(combo_box["MSAAObject"]("list_item__2")); ... function myClick(obj) { var x = obj.ScreenLeft + obj.Width / 2; var y = obj.ScreenTop + obj.Height / 2; Sys.Desktop.MouseDown(VK_LBUTTON, x, y); Sys.Desktop.MouseUp(VK_LBUTTON, x, y); }
Не получается. В результате производится клик по совершенно не относящейся к combo box области, в левой верхней части формы. Лог не содержит воообще ничего.
#15
Отправлено 10 сентября 2008 - 04:27
Возможно, обычный клик не работает по той же причине. Вызовите 'Sys.HighlightObject(combo_box["MSAAObject"]("list_item__2"))' перед попыткой кликнуть этот пункт меню и посмотрите, правильный ли объект подсветится на экране.
Дмитрий
#16
Отправлено 10 сентября 2008 - 13:20
Возможно, обычный клик не работает по той же причине. Вызовите 'Sys.HighlightObject(combo_box["MSAAObject"]("list_item__2"))' перед попыткой кликнуть этот пункт меню и посмотрите, правильный ли объект подсветится на экране.
При запуске через скрипт ничего вообще не подсвечивается и лог ничего не содержит. При клике на объекте в ObjectBrowser и выборе из контекстного меню пункта Highlight on Screen появляется окно с сообщением Cannot highlight this object on screen. Видимо всё таки без хардкода не обойтись.
#17
Отправлено 11 сентября 2008 - 07:23
Ну тогда не знаю что ещё посоветовать. Я нашел приложение на VFP9 и с ним у меня 'myClick' работает нормально, при условии что выпадающий список виден на экране, а нужный пункт виден в выпадающем списке. Может, в VPF8 что-то по-другому работало.
Дмитрий
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных