TestComplete 8 и IE 9: обработка двух процессов

Запустив IE9 с URL-адресом, я обнаружил, что запущены два процесса; родительский и дочерний процессы. В ObjectBrowser TestComplete оба процесса имеют узел Page и связанные дочерние элементы.

В моем Silverlight AUT (тестируемое приложение) есть сетка данных, которую мне нужно прокрутить. Я проверяю полосу прокрутки, прежде чем пытаться прокрутить сетку.

Однако я получаю разные результаты в зависимости от процесса, который я использую.

aqObject.IsSupported(
    Sys.Process("iexplore", 1).Page("https://localhost/url/" ).Panel("silverlightContainer" ).Object(0 ).UIAObject("Popup" ).UIAObject("x" ).UIAObject("tab" ).UIAObject("TabItem", 2 ).UIAObject("StepList" )
, "VerticalScrollPercent")

aqObject.IsSupported(
    Sys.Process("iexplore", 2).Page("https://localhost/url/" ).Panel("silverlightContainer" ).Object(0 ).UIAObject("Popup" ).UIAObject("x" ).UIAObject("tab" ).UIAObject("TabItem", 2 ).UIAObject("StepList" )
, "VerticalScrollPercent")

Один из них вернет true, другой false. Кажется, не имеет значения, сколько я обновляю мир Sys.Refresh или элемент управления Sys.Process...UIAObject("StepList").Refresh, одно всегда будет давать сбой, а другое проходит.

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

Мой вопрос..

  • Что происходит?
  • Как решить в момент запуска приложения, какой процесс использовать для автоматизации?
  • Как еще я мог бы достичь своей цели прокрутки списка (чтобы найти нужную строку), не сталкиваясь с этой проблемой?

person Nigel Thorne    schedule 08.02.2013    source источник
comment
Вау, этот вопрос просмотрели 1000 раз... но ни одного голоса! Не уверен, что это говорит о качестве вопроса :)   -  person Nigel Thorne    schedule 03.01.2016


Ответы (1)


Это происходит из-за функции Internet Explorer LCIE (Loosely-Coupled Internet Explorer). Это заставляет Internet Explorer иметь основной процесс и отдельный процесс для каждой открытой веб-страницы. Дополнительную информацию об этой функции, а также сведения о том, как ее отключить, можно найти в статье Подготовка Internet Explorer к веб-тестированию. раздел справки.

Также вы можете обновить свой экземпляр инструмента до TestComplete 9. Эта версия позволяет получить доступ к объекту страницы независимо от типа браузера и индекса его экземпляра. Например:

var page = Sys.Browser().Page("http://www.google.com");
person Dmitry Nikolaev    schedule 08.02.2013
comment
Я использую IE9. Я уже пытался установить свойство TabProcGrowth, но это не дало никакого эффекта... разве это не только для IE8? - person Nigel Thorne; 09.02.2013
comment
Это должно работать и для IE9. Вы уверены, что существуют два процесса IEXPLORE (в обозревателе объектов или диспетчере задач), если вы видите одно окно Internet Explorer даже после применения свойства TabProcGrowth? - person Dmitry Nikolaev; 11.02.2013