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

Фотография

Проблема С Combobox'ами


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

#1 AlexP

AlexP

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

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 06 августа 2007 - 16:59

Всем привет, давно не появлялся на форуме (читай – давно не прикасался к TestComplete :yess: )

Итак, ситуация следующая:
TestComplete 5
.Net (C#)
стандартные контролы
Jscript

Проблема, нужно сказать, весьма странная... есть 2-а combobox'а: первый отвечает за выбор сервера (список серверов имеется), второй - за выбор базы (зависит от выбора сервера, при открытии получает коллекцию баз, временно кидая progress bar).

Использую следующий код:
...WinFormsObject("cmbServers").ClickItem("Server_1");
...WaitWinFormsObject("ProgressForm", 1000);
...WinFormsObject("cmbDatabases").ClickItem("DB_1");

Получаю:
В первом combobox'е стоит вообще "левый" сервер (пусть, Server_2), но, самое удивительное, что второй cоmbobox получил коллекцию баз нужного мне сервера (Server_1), однако, подобно первому combobox'у, выбирает абсолютно левую базу. Никогда ничего подобного не видел, может быть, кто-то сталкивался с подобной проблемой?
  • 0

#2 Rifle

Rifle

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

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Vitaliy
  • Город:Kyiv

Отправлено 07 августа 2007 - 07:10

Попробуйте использовать какой-то из этих методов ComboBox-а
SelectItem()
SetItemIndex()
SetItems()
  • 0

#3 AlexP

AlexP

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

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 августа 2007 - 11:40

Попробуйте использовать какой-то из этих методов ComboBox-а
SelectItem()
SetItemIndex()
SetItems()


set_SelectedIndex использовать не хотелось бы: у меня есть только имя объекта, поэтому нужно будет узнавать индекс объекта, для этого придётся перебирать все элементы (а их может быть очень много) и т.д.

set_SelectedItem напрямую использовать не могу, так как в combobox сетится коллекция объектов, а не коллекция стрингов

Есть ещё интересный момент: сервер получилось выбрать с помощью свойства Text, а вот если применить это свойство к второму combobox'у, TestComplete выбирает "левую" базу (как и в случае с ClickItem()). Если перейти на следующий шаг wizard'а (тестируется wizard) и вернуться обратно, то и свойство Text, и ClickItem() срабатывают нормально.

Только что заметил, что в случае с ClickItem() (в моём случае), TestComplete берёт следующий элемент в списке! При этом в log пишет, что был выбран нужный мне элемент :(
  • 0

#4 AlexP

AlexP

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

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 августа 2007 - 14:48

Глянул скрипт, который выполняется по завершению wizard'а (T-SQL скрипт): и сервер, и база в скрипте прописаны верно. То есть, какая-то UI'ная ошибка, которую вызывает TestComplete (контролы то стандартные): отображаются в контролах одни объекты, а выбраны были совсем другие. Вообщем, ничего подобного раньше не замечал, расстроился...
  • 0

#5 ArtemRudenko

ArtemRudenko

    Постоянный участник

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 08 августа 2007 - 06:19

У меня подобное происходило достаточно часто, только вот не с combobox, а в основном с UltraGrid от Infragistics. Поставьте breakpoint сразу за выбором значения из combobox, после чего просмотрите свойства, очень вероятно, что какое то из свойств, отвечающих за отображение выбранного эллемента, при вызове метода ClickItem не меняется, соответственно, вам просто необходимо будет менять и это свойство, если для вас критична отображаемая информация, а не результат действия.
Ну а для себя, я просто написал маленькую функцию враппер для set_SeleсtedIndex, смысл прост - получить массив значений элементов достаточно просто, ну а определить индекс элемента массива и, соответственно, нужного нам индекса для выбора ёщё проще.
  • 0
И всё-таки она вертится...

#6 AlexP

AlexP

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

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 08 августа 2007 - 14:23

Поставьте breakpoint сразу за выбором значения из combobox, после чего просмотрите свойства, очень вероятно, что какое то из свойств, отвечающих за отображение выбранного эллемента, при вызове метода ClickItem не меняется, соответственно, вам просто необходимо будет менять и это свойство, если для вас критична отображаемая информация, а не результат действия.
Ну а для себя, я просто написал маленькую функцию враппер для set_SeleсtedIndex, смысл прост - получить массив значений элементов достаточно просто, ну а определить индекс элемента массива и, соответственно, нужного нам индекса для выбора ёщё проще.


Увы, Debugging у меня не работает (проскакивает breakpoint'ы)... но я и без него знаю, какое свойство "проблемное" - Text. Поэтому после ClickItem() явно set'y это свойство.
Что касается set_SeleсtedIndex, то в моём случае это не выход (точнее выход, но не очень хороший). У меня очень большая коллекция и перебор её займёт уйму времени.
  • 0

#7 Dmitry N

Dmitry N

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

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

Отправлено 22 августа 2007 - 04:16

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

С простым примером у меня это не воспроизводится. Наверное, это происходит из-за какой-то специфичной обработки действий над комбо боксами в вашем приложении. Думаю, проблему можно зарепортить в AutomatedQA, но им обязательно потребуется пример.
  • 0
С уважением,
Дмитрий

#8 shaen

shaen

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:Den

Отправлено 05 ноября 2009 - 15:56

Проблема есть и в ТК7. Скрипт выбирает правильный итем комбобокса, на экране можно видеть выбор правильного итема, но когда происходит сравнение окон ТК7 считает, что выбран другой итем. Проблема решается путем написания руками точно такого же кода, который выбирает нужный итем.

Примерно так:

p.Window("win1", "Demo").Window("ComboBox", "", 10).ClickItem("AAAAAAAAAAAAAAAAAAAA")
p.Window("win1", "Demo").Window("ComboBox", "", 10).ClickItem("AAAAAAAAAAAAAAAAAAAA")
  • 0

#9 Dmitry N

Dmitry N

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

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

Отправлено 19 ноября 2009 - 08:51

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

Судя во всему, вы это воспроизводите с примером. Пошлите пример в AutomatedQA, пусть они это починят.
  • 0
С уважением,
Дмитрий


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

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