Что нового

Проблемы с UIAutomate

TrustedCo

Новичок
Сообщения
15
Репутация
0
Версия AutoIt
3.3.16.1
Версия
3.3.16.1
Коллеги добрый день!
Нужна Ваша помощь, т.к. убил целый день и не продвинулся вперед...

Задача, автоматизировать формирование отчета в веб-приложении во внутрисети.
В принципе все сделал, но остался последний шаг это выгрузить его в Excel, для этого надо нажать на кнопку вызвав меню, а в нем нажать Экспорт.
(не смотрел, но полагаю) меню представляет собой div, внутри него список.
В дереве Inspect_W10 нашел эту конструкцию, ищу пункт по тексту, далее поднимаюсь parent и получаю ListItem, и вот, чтобы я не делал не запускается действие по нажатию на Экспорт.
Пробовал DefaultAction, SetFocus, MouseClick и т.д.
Объекты в видимой области, браузер Chrome, доступ к объектам есть, все объекты получаю.
ListItem - в action написано нажмите на родительский элемент
List - в action стоит нажать
Жал на все, но толку ноль
Какие есть варианты? Куда копнуть, чтобы понять почему не делается click?

+ Нашел, что можно через меню вызвать события, срабатывает и Invoke и DefaultAction, но программно нет, ошибка вызова метода.
Пробовал и функцию пользователя ElementInvoke аналогично мимо
Видимо, что-то упускаю

+ При вызове меню программно, не срабатывает нажатие на пункт, а если нажать на кнопку руками, а потом программно нажать на пункт то срабатывает
У кнопки вызова меню
Код:
IsInvokePatternAvailable:    false
IsLegacyIAccessiblePatternAvailable:    true
IsTogglePatternAvailable:    false
 
Последнее редактирование:

lettterssino

Знающий
Сообщения
109
Репутация
10
Коллеги добрый день!
Нужна Ваша помощь, т.к. убил целый день и не продвинулся вперед...

Задача, автоматизировать формирование отчета в веб-приложении во внутрисети.
В принципе все сделал, но остался последний шаг это выгрузить его в Excel, для этого надо нажать на кнопку вызвав меню, а в нем нажать Экспорт.
(не смотрел, но полагаю) меню представляет собой div, внутри него список.
В дереве Inspect_W10 нашел эту конструкцию, ищу пункт по тексту, далее поднимаюсь parent и получаю ListItem, и вот, чтобы я не делал не запускается действие по нажатию на Экспорт.
Пробовал DefaultAction, SetFocus, MouseClick и т.д.
Объекты в видимой области, браузер Chrome, доступ к объектам есть, все объекты получаю.
ListItem - в action написано нажмите на родительский элемент
List - в action стоит нажать
Жал на все, но толку ноль
Какие есть варианты? Куда копнуть, чтобы понять почему не делается click?

+ Нашел, что можно через меню вызвать события, срабатывает и Invoke и DefaultAction, но программно нет, ошибка вызова метода.
Пробовал и функцию пользователя ElementInvoke аналогично мимо
Видимо, что-то упускаю

+ При вызове меню программно, не срабатывает нажатие на пункт, а если нажать на кнопку руками, а потом программно нажать на пункт то срабатывает
У кнопки вызова меню
Код:
IsInvokePatternAvailable:    false
IsLegacyIAccessiblePatternAvailable:    true
IsTogglePatternAvailable:    false
А более полную по элементу информацию можно из инспект?
Сообщение автоматически объединено:

Если точнее ещё бы увидеть , кусок кода где вы пытается обратиться к этому элементу через шаблоны
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,952
Репутация
1,446
ищу пункт по тексту
Попробуйте поработать с этим элементом, а не с его родителем.

Для функции _UIA_ElementMouseClick важны только координаты элемента независимо от поддерживаемых элементом шаблонов. Убедитесь, что после выполнения этой функции курсор мыши находится над нужным вам элементом. Дополнительно, установите последний параметр $fSetFocus в False. Попробуйте двойной клик ($iClicks) или добавьте MouseClick после _UIA_ElementMouseClick.
 
Автор
T

TrustedCo

Новичок
Сообщения
15
Репутация
0
Попробуйте поработать с этим элементом, а не с его родителем.
Я пробовал и с ним и родителем и выше поднимался
Убедитесь, что после выполнения этой функции курсор мыши находится над нужным вам элементом.
Я только осваиваю, этого не умею )
Дополнительно, установите последний параметр $fSetFocus в False. Попробуйте двойной клик ($iClicks) или добавьте MouseClick после _UIA_ElementMouseClick.
А как быть с теми параметрами, что я не хочу задавать X, Y и т.п., прежде чем укажу $fSetFocus в False
Сообщение автоматически объединено:

А более полную по элементу информацию можно из инспект?
Сообщение автоматически объединено:

Если точнее ещё бы увидеть , кусок кода где вы пытается обратиться к этому элементу через шаблоны
Какого именно кнопки вызова меню или ссылку на экспорт?
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Попробуйте поработать с этим элементом, а не с его родителем.

Для функции _UIA_ElementMouseClick важны только координаты элемента независимо от поддерживаемых элементом шаблонов. Убедитесь, что после выполнения этой функции курсор мыши находится над нужным вам элементом. Дополнительно, установите последний параметр $fSetFocus в False. Попробуйте двойной клик ($iClicks) или добавьте MouseClick после _UIA_ElementMouseClick.
Вроде как я понял, что через инспект у него получается по шаблонам обратиться, а через скрипт нет. Поэтому и лучше уточнить.
 
Автор
T

TrustedCo

Новичок
Сообщения
15
Репутация
0
Мне повезло есть режим выгрузки с другой кнопки правда там формат csv и оно без проблем поддалось манипуляции, так что если тему и продолжать то только ради спортивного интереса...
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Ещё раз для уточнения при вызове через Inspect меню Action всё срабатывает, а при написание скрипта не получается?
 
Автор
T

TrustedCo

Новичок
Сообщения
15
Репутация
0
Ещё раз для уточнения при вызове через Inspect меню Action всё срабатывает, а при написание скрипта не получается?
да верно
из скрипта получается только если раскрыть меню мышкой самому, если раскрываю меню скриптом то нет
 
Автор
T

TrustedCo

Новичок
Сообщения
15
Репутация
0
А можно кусок кода?
Увы, уже на новую кнопку переделал.
А что там такого уникального, на выходе имел два объекта: 1 кнопку меню, 2 ссылку на экспорт, проверено по свойствам, что это они, далее просто манипулировал действиями DefaultAction и т.п.
Между вызовом меню и нажатием на пункт ставил паузу чтобы точно был объект в поле зрения
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Возможно стоит использовать функцию
Код:
_UIA_WaitControlTypeElement

Может быть он не успевает отобразиться, а вы уже к нему обращаетесь.
 
Автор
T

TrustedCo

Новичок
Сообщения
15
Репутация
0
Возможно стоит использовать функцию
Код:
_UIA_WaitControlTypeElement

Может быть он не успевает отобразиться, а вы уже к нему обращаетесь.
Там пауза в 3 секунды я уже 3 секунды смотрел на раскрытое меню, после чего вызывался DefaultAction
 
Верх