2015-01-27 1 views
0

У меня есть ситуация здесь. Приложение, которое я автоматизирую, представляет собой приложение JavaScript с оболочкой .NET. Одна из веб-таблиц имеет функциональность, в которой после выбора и выполнения действия в строке эта строка удаляется из таблицы и больше не используется в пользовательском интерфейсе. Сценарий завершается неудачно, поскольку он ищет этот объект.Невозможно идентифицировать объект с помощью QTP, который удаляется из пользовательского интерфейса после его выполнения

Может кто-нибудь, пожалуйста, помогите мне с этим?

QTP версия 11,0

Я использую два свойства, которые не изменяются в объектах, но еще не удается:

Browser("Browser").Page("page").Frame("frame").WebElement("htmltag:=DIV","class:=ntb-cell").Drag 
Browser("Browser").Page("page").Frame("frame").WebElement("html tag:=DIV","class:=ntb-cell").Drop 

Этот объект удаляется с экрана после того, как действие перетаскиванием и нажмите действие завершено. Этот объект также имеет динамически изменяющееся текстовое поле, которое я использовал reg exp для захвата.

+0

Что не получается, и когда? – TheBlastOne

+0

Я думаю, я сам понимаю проблему только сейчас. позвольте мне видеть, что я могу это объяснить. –

+0

У меня есть веб-таблица, в которой есть данные, заполненные фильтром, т.е. в веб-таблице есть блоки данных из различных фильтров. Проблема в том, что я не могу однозначно идентифицировать строку и делать действия на ней. Первый запуск работает, но последующие прогоны терпят неудачу, потому что строка удалена из веб-таблицы. Ошибка, которую я получаю объект, не идентифицируется однозначно, когда я использую код, который я опубликовал в своем вопросе. –

ответ

0

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

Чтобы дополнительно диагностировать, пожалуйста, переключитесь на интеллектуальную идентификацию по всему миру. Затем повторите запуск сценария. Он все еще терпит неудачу, как раньше? Хорошо. Тогда вы получите «Не удается однозначно идентифицировать объект (есть более чем один объект сопоставления ваше описание) во втором проходе

Попробуйте выделяя отдельные экземпляры рассматриваемого объекта:.

Browser("Browser").Page("page").Frame("frame").WebElement("htmltag:=DIV","class:=ntb-cell").Highlight 

будет по-прежнему не , но

Browser("Browser").Page("page").Frame("frame").WebElement("htmltag:=DIV","class:=ntb-cell","index:=0").Highlight 

следует выделить первый экземпляр, «index:=1» второй, и так далее. Если это так, пойти и посмотреть на свойства этих объектов, а также выяснить, какие из них вы можете сделать, чтобы различать между ними Если вы не можете найти, вы должны использовать свойство index.

Если в контексте второго запуска вы не найдете совпадений вообще, даже используя свойство индекса, вы могли бы «пропустить» обновление страницы, а ссылка на объект, созданная внутри QTP, недействительна (т. Е. Адрес GUI объект, используя определенный дескриптор окна, но объект был заменен или воссоздан объектом GUI, который теперь имеет другой дескриптор окна). Это не должно случиться с описательным программированием, как вы используете его, но только, чтобы удостовериться, вставить вызов

Browser("Browser").Page("page").RefreshObject 

перед перетаскиванием вызовов. Затем повторите попытку и повторите диагностику, используя описанные выше шаги. Это должно пролить свет на эту тему, чтобы вы могли найти решение (тогда, пожалуйста, опубликуйте его!), Или дайте нам возможность дать более качественные ответы (или уточнить это).

+0

Спасибо за вашу помощь, я собираюсь попробовать это сегодня, и я буду держать вас в курсе, как это получается. –

+0

RefreshObject работал великолепно. Я ничего не изменил. Я просто добавил эту строку кода перед операторами перетаскивания. –