Автор Тема: UIAutomate - автоматизация нестандартных элементов GUI  (Прочитано 76648 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн paa13 [?]

  • Новичок
  • *
  • Сообщений: 19
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Уберите обновление и узнаете - в этом дело или нет.
Ничего не поменялось.

 утечка прекращается если снять галки со всех  чекбоксов, если хоть 1 включен, срабатывает эта строка и сразу начинает расти память
    $aElem = _UIA_FindElementsInArray($aText, "Name", GUICtrlRead($checksys[$i], 1), True)

Русское сообщество AutoIt

Re: UIAutomate - автоматизация нестандартных элементов GUI
« Ответ #240 Отправлен: Август 25, 2017, 15:37:13 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654

  • Автор темы
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
paa13
Подозреваю, что после нажатия "Обновить" страница не успевает загрузиться. Сделайте задержку - дождитесь загрузки страницы.

Оффлайн paa13 [?]

  • Новичок
  • *
  • Сообщений: 19
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Подозреваю, что после нажатия "Обновить" страница не успевает загрузиться. Сделайте задержку - дождитесь загрузки страницы.

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

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654

  • Автор темы
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
paa13
Откройте UIAutomate.au3. После строки №585 добавьте $vValue = 0, чтобы получилось так
Код: AutoIt [Выделить]
...
      EndIf
    EndIf
    $vValue = 0 ; <= добавить
  Next
  ReDim $aArray[$j]
...

Сохраните UIAutomate.au3 (она может быть "только для чтения") и попробуйте.

Русское сообщество AutoIt

Re: UIAutomate - автоматизация нестандартных элементов GUI
« Ответ #243 Отправлен: Август 25, 2017, 16:56:05 »

Оффлайн paa13 [?]

  • Новичок
  • *
  • Сообщений: 19
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Откройте UIAutomate.au3. После строки №585 добавьте $vValue = 0

На первый взгляд прекратилось, еще погоняю некоторое время   :laugh:

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654

  • Автор темы
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
Обновление до версии 1.8:
- предотвращены возможные утечки памяти при перезаписи указателей
- добавлена проверка на наличие элементов в массиве для функций, принимающих массив

Оффлайн tryinfinity [?]

  • Новичок
  • *
  • Сообщений: 22
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
В приложении telegram не находит вообще никаких параметров. Может нужно добавить еще какую библиотеку?
Как то autoit не дружит с телеграмом, или я плохо искал.

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654

  • Автор темы
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
tryinfinity
Цитировать
В приложении telegram не находит вообще никаких параметров
Уровень поддержки программой интерфейса IUIAutomation определяет сам разработчик. Если Inspect не находит какие-то параметры, значит их нет.

Русское сообщество AutoIt

Re: UIAutomate - автоматизация нестандартных элементов GUI
« Ответ #247 Отправлен: Сентябрь 27, 2017, 15:41:58 »

Оффлайн saintfr3ak [?]

  • Новичок
  • *
  • Сообщений: 2
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Помогите пожалуйста. Сделал небольшой скрипт, для автоматизации обновлений в 1с.

В общем, в начале цикла я задаю параметры
(нажмите для показа/скрытия)

А потом с помощью _UIA_action("OK","click") (например) их запускаю, в зависимости от всплывающего окна по свичу. В общем всё работает, но проблема в том, что у тех же кнопок подтверждения очень часто имя класса и тайтл совпадает и почему-то я не могу использовать один экшен дважды-трижды и так далее. На второй раз, если это уже новое окно - UIAutomate не находит кнопку.

Я так понимаю, что где-то в глобальный массив записываются данные, в какой именно понять не могу. Повторно _UIA_setVar тоже не работает. Такая ерунда.
« Последнее редактирование: Ноябрь 08, 2017, 07:58:45 от saintfr3ak »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654

  • Автор темы
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
saintfr3ak
Судя по коду, вы используете UDF с официального форума. Но эта тема к UIAWrappers.au3 никакого отношения не имеет. Или создайте отдельную тему, или задайте вопрос на английском форуме.

Оффлайн saintfr3ak [?]

  • Новичок
  • *
  • Сообщений: 2
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Ммм, прошу прощения. Мне гугль подсунул эту тему по запросу "_UIA_action", но может оно и к лучшему. Перепишу код с использованием вашей библиотеки. Судя по семплу, описанных мною проблем тут нет.

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3999
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
saintfr3ak

ПредупреждениеЗа нарушение правил форума (пункт В.11):
Цитировать
Любые отрывки AutoIt кода необходимо заключать в тег [autoit] (подробнее), а обычный код соответственно в тег [code] (подробнее). Также большие выдержки текста помещайте под тег [spoiler] (подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.

Скорблю и помню.




Оффлайн Radik [?]

  • Новичок
  • *
  • Сообщений: 68
  • Репутация: 1
    • Награды
Добрый день!
Замечательная у вас трава библиотека, осваиваю.
Очень замечательный и нужный инструмент. Когда в проге надо пройтись по 3000-5000 записей
и работать с элементами, которые через AutoIt Window Info не видно и доступа к БД нет.
Наткнулся я на такую проблему: есть элемент $UIA_TableControlTypeId, у него 4 Children (строки).
У строк - 10 Children (столбцы). В списке функций есть
Код: AutoIt [Выделить]
_UIA_ElementGetFirstLastChild

и
Код: AutoIt [Выделить]
_UIA_ElementGetPreviousNext

.
Я так понял, чтобы пройти по строкам надо 4 цикла, а внутри каждого из них 10 циклов по столбцам?
Понятно, что это фигня какая-то, всяко есть нормальное решение.
Есть еще такой вариант
Код: AutoIt [Выделить]
#include <UIAutomate.au3>

$hWnd = WinActivate("Программа")
$oParent = _UIA_GetElementFromHandle($hWnd)
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_TableControlTypeId", "Grid1")
$aAllElements = _UIA_FindAllElements($oParent)

For $i = 1 To $aAllElements[0]
   $aElement = _UIA_ElementGetPropertyValue($aAllElements[$i], "Name")
   $sElement = _UIA_ElementGetPropertyValue($aAllElements[$i], "LegacyIAccessible.Value")
   MsgBox(4096, $i, $aElement & @CRLF & $sElement)
Next
 

Пробежать по всем и запомнить, что мне нужны элементы № 25, 41, 77 и т.д.,
но это как-то не кошерно.

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654

  • Автор темы
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
Radik  [?]
Цитировать
элемент $UIA_TableControlTypeId, у него 4 Children (строки).У строк - 10 Children (столбцы)
Странная у вас таблица. Я с такими не сталкивался. Обычно у таблицы все ячейки идут последовательно, имеют тип UIA_DataItemControlTypeId и различаются свойствами GridItem.Row и GridItem.Column.

И ещё я не понял - в чём вопрос? Делайте так, как вам удобно и/или понятно.

Цитировать
Пробежать по всем и запомнить, что мне нужны элементы № 25, 41, 77
Если в функции _UIA_FindElementsInArray() установить последний параметр в True, то она вернёт массив ИНДЕКСОВ исходного массива элементов.

Оффлайн Radik [?]

  • Новичок
  • *
  • Сообщений: 68
  • Репутация: 1
    • Награды
А все-таки, если у элемента 8 children, чтобы по ним пройтись надо делать 8 циклов?

Русское сообщество AutoIt

Re: UIAutomate - автоматизация нестандартных элементов GUI
« Ответ #254 Отправлен: Ноябрь 10, 2017, 17:43:30 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
64370 Просмотров
Последний ответ Сентябрь 22, 2010, 22:13:33
от CreatoR
18 Ответов
12835 Просмотров
Последний ответ Сентябрь 18, 2011, 20:49:26
от Zalman1980
9 Ответов
5179 Просмотров
Последний ответ Март 12, 2012, 00:33:05
от cobra2029
0 Ответов
1870 Просмотров
Последний ответ Май 07, 2012, 15:00:44
от Dedullika
18 Ответов
4609 Просмотров
Последний ответ Октябрь 17, 2012, 00:07:30
от Kaster
0 Ответов
1901 Просмотров
Последний ответ Декабрь 02, 2012, 10:15:22
от madmasles
6 Ответов
3236 Просмотров
Последний ответ Декабрь 10, 2012, 11:30:14
от Zergii
3 Ответов
1830 Просмотров
Последний ответ Декабрь 21, 2014, 19:24:21
от brain
8 Ответов
2114 Просмотров
Последний ответ Ноябрь 26, 2015, 17:54:56
от Garrett
22 Ответов
2062 Просмотров
Последний ответ Июнь 09, 2017, 01:12:34
от Alofa