Задача такова: сначала нужно развернуть все категории, чтобы они отображали содержащиеся в них записи, а потом свернуть их. Первая задача была решена так: Разворачиваем первую категорию и перебираем в ней все записи. Если при этом попадается некая i-тая запись, имеющая значение свойства Displayed = false, то делаем ее отображаемой при помощи прокрутки (grid.FirstDisplayedScrollingRowIndex = i;) ну и т.д. Ну а вот с, казалось бы, более простой второй задачей справиться не получается. Например, категория имеет большое количество записей и все они не помещаются в окне грида. Следующая за ней категория не видна. После сворачивания этой первой категории в окне появляется вторая, а вот достучаться к ее AccessibilityObject невозможно, как будто она все еще находится за пределами экрана (См. прилагаемый рисунок).

Тестируемое приложение зависает при попытке доступа к AccessibilityObj
#1
Отправлено 26 марта 2012 - 06:13
Задача такова: сначала нужно развернуть все категории, чтобы они отображали содержащиеся в них записи, а потом свернуть их. Первая задача была решена так: Разворачиваем первую категорию и перебираем в ней все записи. Если при этом попадается некая i-тая запись, имеющая значение свойства Displayed = false, то делаем ее отображаемой при помощи прокрутки (grid.FirstDisplayedScrollingRowIndex = i;) ну и т.д. Ну а вот с, казалось бы, более простой второй задачей справиться не получается. Например, категория имеет большое количество записей и все они не помещаются в окне грида. Следующая за ней категория не видна. После сворачивания этой первой категории в окне появляется вторая, а вот достучаться к ее AccessibilityObject невозможно, как будто она все еще находится за пределами экрана (См. прилагаемый рисунок).
#2
Отправлено 26 марта 2012 - 19:22
С довольно специфичной проблемой вы столкнулись. Как я понимаю, тестируете .NET приложение (WPF?) и работаете с элементами контрола через его нативные свойства. Больше ничего сказать по вашему описанию не могу, извините. :)
Имея положительный опыт разбора подобных проблем с помощью службы поддержки AutomatedQA/SmartBear, советую обратиться за помощью к ним.
Дмитрий
#3
Отправлено 27 марта 2012 - 04:52
Здравствуйте.
С довольно специфичной проблемой вы столкнулись. Как я понимаю, тестируете .NET приложение (WPF?) и работаете с элементами контрола через его нативные свойства.
Совершенно верно, так и есть. Но для решения данной проблемы приходится просто высчитывать "габариты" строки грида и двигаться по координатам. Перерыв материалы на сайте AutomatedQA/SmartBear, с удивлением обнаружил, что для DataGridView, с которым я работаю, нет метода клика по определенной ячейке ClickCell(), а также невозможно извлечь изображение из ячейки грида. Вот и приходится искать обходные пути (Как, например, такой).
#4
Отправлено 27 марта 2012 - 06:32
Как я уже писала здесь, ClickCell/wValue и т.п. для вашего грида изначально нет, потому что у него нестандартное имя класса. Вам надо добавить его в Object Mapping для DataGridView. После этого ClickCell как раз и появится.Перерыв материалы на сайте AutomatedQA/SmartBear, с удивлением обнаружил, что для DataGridView, с которым я работаю, нет метода клика по определенной ячейке ClickCell()...
#5
Отправлено 27 марта 2012 - 07:18
Как я уже писала здесь, ClickCell/wValue и т.п. для вашего грида изначально нет, потому что у него нестандартное имя класса. Вам надо добавить его в Object Mapping для DataGridView. После этого ClickCell как раз и появится.
Спасибо за совет. К сожалению, сейчас нет возможности испробовать. Попробую вечером. А скажите, не появится ли в этом случае возможность извлекать из ячейки рисунок? Сейчас пользуюсь свойством Value только для того, чтобы определить присутствует он в ячейке, или нет (null). Сам же рисунок приходится получать при помощи метода picture по координатам ячейки.
#6
Отправлено 27 марта 2012 - 07:18
Как я уже писала здесь, ClickCell/wValue и т.п. для вашего грида изначально нет, потому что у него нестандартное имя класса. Вам надо добавить его в Object Mapping для DataGridView. После этого ClickCell как раз и появится.
Спасибо за совет. К сожалению, сейчас нет возможности испробовать. Попробую вечером. А скажите, не появится ли в этом случае возможность извлекать из ячейки рисунок? Сейчас пользуюсь свойством Value только для того, чтобы определить присутствует он в ячейке, или нет (null). Сам же рисунок приходится получать при помощи метода picture по координатам ячейки.
#7
Отправлено 27 марта 2012 - 09:59
Насколько я знаю, метода "из коробки" для этого нет.А скажите, не появится ли в этом случае возможность извлекать из ячейки рисунок? Сейчас пользуюсь свойством Value только для того, чтобы определить присутствует он в ячейке, или нет (null). Сам же рисунок приходится получать при помощи метода picture по координатам ячейки.
Ваш вариант - один из возможных.
Есть и другие способы. Например, если wValue(row, column) возвращает собственно картинку, т.е. .NET System.Drawing.Bitmap, то можно сделать ей Save_2(fileName), а затем "сконвертировать" в TestComplete'овский объект Picture, используя Utils.Picture.LoadFromFile(fileName).
#8
Отправлено 27 марта 2012 - 11:30
А нет ли что-нибудь для сохранения в Clipboard?Есть и другие способы. Например, если wValue(row, column) возвращает собственно картинку, т.е. .NET System.Drawing.Bitmap, то можно сделать ей Save_2(fileName), а затем "сконвертировать" в TestComplete'овский объект Picture, используя Utils.Picture.LoadFromFile(fileName).
#9
Отправлено 27 марта 2012 - 11:32
Получаете TestComplete'овский объект Picture и сохраняете его в Sys.Clipboard.А нет ли что-нибудь для сохранения в Clipboard?
Есть и другие способы. Например, если wValue(row, column) возвращает собственно картинку, т.е. .NET System.Drawing.Bitmap, то можно сделать ей Save_2(fileName), а затем "сконвертировать" в TestComplete'овский объект Picture, используя Utils.Picture.LoadFromFile(fileName).
.NET картинки, возможно, можно записывать в clipboard как-нибудь напрямую, например, используя .NET класс System.Windows.Clipboard, но я не пробовала, поэтому точно сказать не могу.
#10
Отправлено 27 марта 2012 - 15:19
Как я уже писала здесь, ClickCell/wValue и т.п. для вашего грида изначально нет, потому что у него нестандартное имя класса. Вам надо добавить его в Object Mapping для DataGridView. После этого ClickCell как раз и появится.
Увы, заветный метод ClickCell так и не появился. Что же касается возможности получения grid.wValue(row, column), то его достоинства весьма сомнительны, т.к. фактически это то же самое, что и .NET свойство grid.Item(column, row).Value. Разве что меняются местами колонки и строки.
#11
Отправлено 04 апреля 2012 - 14:57
Как я уже писала здесь, ClickCell/wValue и т.п. для вашего грида изначально нет, потому что у него нестандартное имя класса. Вам надо добавить его в Object Mapping для DataGridView. После этого ClickCell как раз и появится.
А таки да! Нашелся все-таки ClickCell благодаря Вашему совету. Спасибо. Надеюсь, теперь и к AccessabilityObject лишний раз можно будет не обращаться.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных