Selenium IDE не может найти меню заголовка столбца Ext JS - PullRequest
1 голос
/ 24 апреля 2019

Я использовал Ext JS для моего внешнего интерфейса, и в моей сетке есть столбцы с меню в заголовках (просто стандартное значение).

Меню в заголовке используется для включения или отключения фильтров вхранилище, основанное на заполненных в нем значениях.

Я только что начал использовать селен для автоматизации некоторых моих тестов внешнего интерфейса, и я подумал, что Selenium не может найти действие click в меню заголовка столбца ...

Я прочитал в Интернете, что нам нужно указывать уникальные идентификаторы для компонентов, чтобы Ext JS не придумал динамически генерируемые идентификаторы для них.Я установил идентификатор для типа xcolumn gridcolumn, но решил, что это не относится к меню заголовка (или к кнопке, которая вызывает его открытие).

Может ли кто-нибудь помочь мне с применением уникального идентификатора к кнопке, которая приводит квверх по окну меню или каким-то образом заставить Selenium найти меню заголовка?

Ext JS меню заголовка столбца

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Спасибо @JimGrigoryan за совет!После перехода в режим селена Kantu в режиме рабочего стола с помощью XClick, XMove и XMoveRelative я смог найти элементы на странице, сделав снимки экрана.Теперь не имеет значения, какие динамические идентификаторы Ext Js присваивает элементам.

0 голосов
/ 01 июля 2019

Попробуйте что-то вроде этого

Примечание : Вы должны внести небольшие изменения в приведенный ниже код в соответствии с вашими потребностями.

//find header
WebElement header = findElement(By.xpath("//div[starts-with(.,'Specification Status')]"));

//Make mouse event hover on header for show the arrow
Actions action = new Actions(driver);
action.moveToElement(header).perform();

//click on arrow
header.findElement(By.cssSelector(".x-column-header-trigger")).click();

//Mouse over event on filter item, this element not linked on header
// findelement no DOM.
WebElement filtros = findElement(By.cssSelector("a[aria-label='Filters'"));
action.moveToElement(filtros).perform();

//find inputs, this element not linked to header
List<WebElement> searchFields = findElements(By.cssSelector("input[placeholder='Enter Filter Text...']"));

WebElement searchId = searchFields.get(0); //<<< here is according how many inputs is showed in your filters
action.moveToElement(searchId).perform();
searchId.sendKeys("Value to search");

Thread.sleep(1500);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...