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

Фотография

ComboBox в FoxPro приложении


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

#1 Danre

Danre

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

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Гаврилов Александр Иванович

Отправлено 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
  • 0

#2 aspirin

aspirin

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Aspirin
  • Город:Minsk

Отправлено 03 сентября 2008 - 09:03

а что есть в 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
  • 0

#3 Rebz

Rebz

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

  • Members
  • PipPipPipPip
  • 471 сообщений


Отправлено 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 объекта. Если значение равно, то выходим из цикла и кликаем на это значение. Если условие не выполняется, берем следующий элемент.
  • 0

#4 Dmitry N

Dmitry N

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

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

Отправлено 03 сентября 2008 - 10:16

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

А какая именно версия TestComplete 6? Если не последняя (6.40), попробуйте последнюю.
  • 0
С уважением,
Дмитрий

#5 aspirin

aspirin

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Aspirin
  • Город:Minsk

Отправлено 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 объекта. Если значение равно, то выходим из цикла и кликаем на это значение. Если условие не выполняется, берем следующий элемент.



НАХ твой алгоритм тут и так все понятно :)
  • 0

#6 Danre

Danre

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

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Гаврилов Александр Иванович

Отправлено 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
  • 0

#7 Dmitry N

Dmitry N

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

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

Отправлено 04 сентября 2008 - 03:17

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

вот именно здесь и проблема, не получается кликнуть по определенному значению. По крайней мере метод ["Click"] не проходит

А что именно происходит при попытке вызвать метод Click?
  • 0
С уважением,
Дмитрий

#8 Danre

Danre

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

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Гаврилов Александр Иванович

Отправлено 04 сентября 2008 - 13:59

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

вот именно здесь и проблема, не получается кликнуть по определенному значению. По крайней мере метод ["Click"] не проходит

А что именно происходит при попытке вызвать метод Click?


Не происходит вообще ничего. Выбранное значение в combobox остаётся таким же, что и до вызова ["Click"].
  • 0

#9 Dmitry N

Dmitry N

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

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

Отправлено 05 сентября 2008 - 15:44

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

А в логе что? Ошибки есть?
  • 0
С уважением,
Дмитрий

#10 Danre

Danre

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

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Гаврилов Александр Иванович

Отправлено 05 сентября 2008 - 21:03

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

В логе ошибок нет.
  • 0

#11 Dmitry N

Dmitry N

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

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

Отправлено 06 сентября 2008 - 15:30

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

А хоть что-нибудь там есть?
  • 0
С уважением,
Дмитрий

#12 Danre

Danre

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

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Гаврилов Александр Иванович

Отправлено 08 сентября 2008 - 13:21

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

А хоть что-нибудь там есть?


Есть. В ответ на
combo_box["MSAAObject"]("list_item__2")["Click"]();

в логе появляется строка :
The window was clicked with the left mouse button. Normal 17:17:34
  • 0

#13 Dmitry N

Dmitry N

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

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

Отправлено 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);
}

  • 0
С уважением,
Дмитрий

#14 Danre

Danre

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

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Гаврилов Александр Иванович

Отправлено 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 области, в левой верхней части формы. Лог не содержит воообще ничего.
  • 0

#15 Dmitry N

Dmitry N

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

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

Отправлено 10 сентября 2008 - 04:27

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

Возможно, обычный клик не работает по той же причине. Вызовите 'Sys.HighlightObject(combo_box["MSAAObject"]("list_item__2"))' перед попыткой кликнуть этот пункт меню и посмотрите, правильный ли объект подсветится на экране.
  • 0
С уважением,
Дмитрий

#16 Danre

Danre

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

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Гаврилов Александр Иванович

Отправлено 10 сентября 2008 - 13:20

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

Возможно, обычный клик не работает по той же причине. Вызовите 'Sys.HighlightObject(combo_box["MSAAObject"]("list_item__2"))' перед попыткой кликнуть этот пункт меню и посмотрите, правильный ли объект подсветится на экране.


При запуске через скрипт ничего вообще не подсвечивается и лог ничего не содержит. При клике на объекте в ObjectBrowser и выборе из контекстного меню пункта Highlight on Screen появляется окно с сообщением Cannot highlight this object on screen. Видимо всё таки без хардкода не обойтись.
  • 0

#17 Dmitry N

Dmitry N

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

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

Отправлено 11 сентября 2008 - 07:23

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

Ну тогда не знаю что ещё посоветовать. Я нашел приложение на VFP9 и с ним у меня 'myClick' работает нормально, при условии что выпадающий список виден на экране, а нужный пункт виден в выпадающем списке. Может, в VPF8 что-то по-другому работало.
  • 0
С уважением,
Дмитрий


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

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