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

Фотография

TestComplete не может найти элемент


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

#1 Axill

Axill

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

  • Members
  • Pip
  • 18 сообщений
  • ФИО:КАС

Отправлено 05 ноября 2014 - 09:02

Добрый день. 

Появилась следующая проблема. Допустим мне нужно проверить есть ли на экране определенный элемент:
Пишу 

if (Sys["Process"]("NameOfMyProcess")["WPFObject"]("HwndSource: WindowContentHolder", "Confirmation")["VisibleOnScreen"])

{...}else{...}

TC падает с ошибкой, что не может найти ["WPFObject"]("HwndSource: WindowContentHolder", "Confirmation"). Но если он не может его найти, то не должен ли он пропустить if и перейти к else? Не работает при любой проверке - Visible, VisibleOnScreen, Exists.

В чем может быть причина?
Заранее спасибо :)


  • 0

#2 aksas

aksas

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 05 ноября 2014 - 09:21

Нет, он не должен :) Используйте WaitChild (или возможно WaitWPFObject) и проверяйте сначала Exists если не уверены что объект существует
  • 1

#3 Axill

Axill

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

  • Members
  • Pip
  • 18 сообщений
  • ФИО:КАС

Отправлено 05 ноября 2014 - 09:41

То есть через Visible или VisibleOnScreen можно проверять только те элементы которые гарантированно существуют?
Хорошо, сейчас ещё заметил, что если я задаю переменную var variable = Sys["Process"]("NameOfMyProcess")["WPFObject"]("HwndSource: WindowContentHolder", "Confirmation"), то все равно возникает та же ошибка. Если мне периодически нужно будет проверять, есть ли элемент на экране, то придется каждый раз в if писать полное имя объекта? Или тут в чем-то другом причина?


  • 0

#4 aksas

aksas

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 05 ноября 2014 - 10:14

 

То есть через Visible или VisibleOnScreen можно проверять только те элементы которые гарантированно существуют?

Да, совершенно верно.

 

 

придется каждый раз ...  писать полное имя объекта

 

Свойства объекта считываюстя при обращении, соответственно если в процессе выполнения теста что-то поменялось ваша переменная будет хранить старое состояние, и ее нужно заново  перечитать. Эту проблему частично можно решить с помощью использования алиасов, но  проблему с Visible когда объект не существует это не решает. Можно использовать свою обертку над обращением к элементам приложения. Тут уже варианты и сложность решения могут быть разные


  • 0

#5 Axill

Axill

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

  • Members
  • Pip
  • 18 сообщений
  • ФИО:КАС

Отправлено 05 ноября 2014 - 10:27

Большое спасибо за помощь!


  • 0


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

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