Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

VS2010 Coded UI Test не определяет контролы ExtJS всплывающего окна


(anton_matyushkin) #1

 

Добрый день.

Столкнулся со следующей ситуаций: пишу автотест для веба.
Там следующая ситуация:
1. Есть основная форма со списком клиентов.
2. В этом списке выбираем запись и жмем кнопку “Открыть”.
3. Форма с данными по выбранной записи открывается как бы во всплывающем окне.

При попытке обойти рекордером все поля формы с данными – он определяет поля.

Но при последующем воспроизведении теста – он ищет эти поля не в форме с данными, а в основной форме.

Например,
#region Variable Declarations
WinEdit uIФамилияEdit = this.UIAKSiклиникаMozillaFiWindow.UIФамилияRow.UIФамилияEdit;
#endregion

// Щелчок “Фамилия:” text box
Mouse.Click(uIФамилияEdit, new Point(25, 7));
Keyboard.SendKeys(uIФамилияEdit, “Дурья”, ModifierKeys.None);

Поле не находится и тест валится в Exception:
Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnBlockedControlException: Дополнительные сведения Элемент управления блокируется другим элементом управления. Переведите блокированное управление в видимый режим и повторите действие.:
TechnologyName: “MSAA”
Name: “AKSi-клиника – Mozilla Firefox”
ControlType: “Application”
—> System.Runtime.InteropServices.COMException: Исключение из HRESULT: 0xF004F003.

Контролы написаны на ExtJS и они динамические.

Как определить контролы в открывающемся окне?

 


(Виталий) #2

Добрый день,

У меня есть два возможных варианта решения вашей проблемы:

1. Попробуйте поставить задержку после нажатия клавиши миши, возможно тест хочет заполнить форму еще до того как она появиться.

2. Поиграйтесь с параметром SearchConfiguration Вашего сплывающего окна (например поставьте свойство ExpandWhileSearching).


(Сергей Блохин) #3

https://rubygems.org/gems/selenium-extjs — посмотрите в сторону этой библиотеки.


(anton_matyushkin) #4

Виталий, спасибо.

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

Однако, проблема есть.

Меня смущают следующие моменты:

1. И на основном окне, и на всплывающем есть поля попадающие под одно и тоже объявление 

WinEdit uIФамилияEdit = this.UIAKSiклиникаMozillaFiWindow.UIФамилияRow.UIФамилияEdit;

Причем для обоих вкладок абсолютно одинаковые параметры.

2. Не срабатывает клик по самому всплывающему окну, причем это характрено для любой части окна (пробовал так же на кнопках и других полях).

3. Само приложение реализовано на ExtJS, статических параметров нет.


(anton_matyushkin) #5

TIT , каким данную библиотеку можно приделать к VS? Оно совместимо?


(levaal) #6

Антон, надо смотреть на код HTML который имеется и как объявлены ваши переменные (иерархия, SearchConfiguration и т.д.)

 

 

И на основном окне, и на всплывающем есть поля попадающие под одно и тоже объявление 

WinEdit uIФамилияEdit = this.UIAKSiклиникаMozillaFiWindow.UIФамилияRow.UIФамилияEdit;

 

если оба поля и вправду попадают под это объявление, то можно сделать следующим образом:

UITestControlCollection foundControls = this.UIAKSiклиникаMozillaFiWindow.UIФамилияRow.UIФамилияEdit.FindMatchingControls();

WinEdit familiaEditMain = (WinEdit)foundControls[0];

WinEdit familiaEditPopUp = (WinEdit)foundControls[1];

 

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

 

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