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

Фотография

Overlapping window. Делфи программа, окно и всплывающий календарь

Overlapping window

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

#1 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 30 июня 2015 - 15:26

Во время воспроизведения теста. 
Происходит следующее: выбор кнопки вызова списка всплывающего календаря (файл kalendar2.jpg). Потом возникает ошибка (Overlapping window) "Перекрытие окна". Потом ошибка: "была попытка выполнить действие в точке (194, 334), которая перекрывается другим окном". (there was an attempt to perform an action at the point (194, 334), which is overlapped by another window)
Дополнительная информация от TestComplete: 
"Tested object:
Aliases.Программа.TPopupCalendar.TPanel.TLocCalendar
(Sys.Process('Программа').Window('TPopupCalendar', '', 1).Window('TPanel', '', 1).Window('TLocCalendar', '', 1)) ".
На форме Делфи два календаря (вызываемых кнопкой) один отрабатывает совершенно нормально, со вторым возникает описанная ошибка. Еще TestComplete пишет, что ожидается активация окна (Waiting until the window is activated).
Другими словами, во всплывающем окне невозможно выбрать опцию, и оно судя по всему неактивно. (рисунок календарь-активность2.jpg).
Предполагаю что не происходит щелчка по опции.
 
Может причина в том что переменная календаря применяется для обоих календарей:  
Для первого календаря:
locCalendar := Программа.TPopupCalendar.TPanel.TLocCalendar;
locCalendar.Click(30, 76);
TDBDateEdit.Click(71, 12);
 
Для второго:
  locCalendar.Click(37, 81);
  TDBDateEdit.Click(73, 10);
 
 
Как решить эту проблему?

Прикрепленные файлы


  • 0

#2 Сергей

Сергей

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

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 01 июля 2015 - 09:11

Предположу, что там сэндвич, и TestComplete верно выдает ошибку.

Сделайте без мапинга и без рекордера и проверьте объекты в обджектбраузере.


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#3 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 01 июля 2015 - 10:54

Сергей, если под сэндвичем понимать вложенность, то в календаре, вложений уже нет.

И ведь работает такой же календарь на этой же форме чуть выше (на картинке календарь-активность2.jpg) кнопочка "15", где бирюзовый фон.

Насчет "маппинга" и "рекордера" - не совсем понимаю, что имеется ввиду - удалить компонент NameMapping в проекте или очистить его?

"Без рекордера" - в смысле, просто пройти действия без записи теста?

Если так, то прохожу - все в порядке. А насчет маппинга - удалять боюсь, вдруг потом записанные тесты работать перестанут. Просветите, пожалуйста, как поступить.

Пока с календарем проблему решил так - просто с клавиатуры ввожу дату. Всплывающим окном не пользуюсь, так что это решает проблему путем обхода.


  • 0

#4 Сергей

Сергей

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

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 01 июля 2015 - 11:56

1. Компонент Мапинг удалять не надо.

2. Руками пропишите объект, к-й из обжектбраузера

3. По приведенном коду предполагаю, что вы все таки пользовались рекордером, а лучше руками

4. Сомневаюсь, что в календаре вложений нет. Чтобы появились, зайдите в настройки проекта и попробуйте прописать в в опенаппликешн объект календаря в один из трех (msaa, text, ui). Даже если рисованный полностью календарь (в чем опять сомневаюсь, чтобы в Дельфи рисовали готовые компоненты), текст-рекогнишн должен помочь где текст.

5. попросите программистов, чтобы собрали сборку с определенными опциями (какие точно можно посмотреть в онлайн справке, там есть отдельно), упростит сильно жизнь

6. если ничего не помогло, можно посмотреть, каким объектом что перекрывается, в тесткомплите есть функция определения видимого объекта по координатам и посмотреть в дебагере, какой же все таки там реально объект

7. спецом на последнем пункте - возможно, самое простое решение;)  так не любимы многими использовать паттер сон, в простонароде - поставьте задержку в сек, переходные процессы, знаете ли. тесткомплит их очень не любит, точнее десктопные приложения, если до этого занимались веб-тестированием, привыкайте.


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#5 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 01 июля 2015 - 12:46

Сергей, Спасибо, второй пункт сразу помог. Оказывается в ObjectBrowser-е был объект для второго календаря с "имя"+"1". Как только прописал в тесте в соответствии с ObjectBrowser - все заработало. Еще раз благодарю.


  • 0

#6 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 09 июля 2015 - 13:26

Сергей, по пункту 6: где функция определения видимого объекта по координатам находится и как ей воспользоваться?

 

Сергей, снова та же проблема но ракурс другой. Два календаря, один отрабатывает открытие и выбор даты нормально. Второй открывается, после чего TestComplete пишет что окно ждет активации, потом пишет про "перекрытие окна", как и раньше. В Object Browsere два окна TLocCalendear, в то время когда одно окно активно в графе MappedName указан "маршрут имен", а в неактивном пусто. Когда активность окон меняется, то аналогично меняется на "маршрут имен" и пусто - графа MappedName для нового активного окна. Вообщем теперь оба окна имеют одинаковый путь MappedName, только когда окно активно путь прописан для этого окна, и при вызове следующего второго календаря происходит ожидание активности окна, а потом пишет overlapping window. Предполагаю, что теперь это связано с одинаковым именем в Object Browser для окон в MappedName.

 

Подскажите, как решить эту проблему? 

 

P.S. После переустановки разрешения экрана, пришлось переписать часть тестов. Подскажете, как можно избежать подобных трудностей. Может есть какой-то инструмент для переделки кода под новое разрешение?


  • 0

#7 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 16 июля 2015 - 15:03

Проблема уже не актуальна. Видимо причина была в одинаковом имени объектов. Новая сборка тестируемого приложения решила проблему - в ней объекты календаря с разными именами.


  • 0


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

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