Что нового

UIAutomate - автоматизация нестандартных элементов GUI

tryinfinity

Новичок
Сообщения
40
Репутация
0
Почему то не идет поиск элемента по параметру AutomationId
Код:
$oElementAddButton= _UIA_WaitControlTypeElement($oParent, "UIA_ButtonControlTypeId", "NewButton", "AutomationId");


upd: Перезапустил редактор, заработало)
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
В какой кодировке были сохранены au3 файлы? У меня кракозябры одни :stars:
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
Ага спасибо. Однако странное решение сохранять в windows-1251. Исходя из того, что в файле присутствует ру-текст проще было бы сразу в utf.

У меня тут трабла -
Передаю дескриптор окна в _UIA_GetElementFromHandle, а он мне выдает пустое значение. А _UIA_GetControlTypeElement валится с ошибками. Хотя согласно Inspect я передаю все значения правильно.

!> _UIA_FindAllElementsEx : ?????? ???????? ??????? ???????
!> _UIA_FindAllElements : ?????? ???????? ??????? ????????? (????????)
!> _UIA_GetControlTypeElement : ?????? ???????? ??????? ????????? (????????)


Пытаюсь получить элемент - UIA_TreeControlTypeId



Добавлено:
Сообщение автоматически объединено:

А ну и приложение над котором провожу эти действия отваливается в Not responding и грузит процессор свыше 50%. Это как так?

@error = 4 - ошибка создания массива элементов (объектов)

Как эту ошибку исправить?
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,958
Репутация
1,448
SuperSonic [?]
согласно Inspect я передаю все значения правильно.
Значит, сломалась UDF. Видимо, магнитные бури. Пойду заварю кофе, протру хрустальный шар, подготовлю карты Таро, и начну искать проблему.
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
InnI сказал(а):
SuperSonic [?]
согласно Inspect я передаю все значения правильно.
Значит, сломалась UDF. Видимо, магнитные бури. Пойду заварю кофе, протру хрустальный шар, подготовлю карты Таро, и начну искать проблему.

731KkATw5DQ.jpg



Добавлено:
Сообщение автоматически объединено:

Короче какая-то мистика... стоит пересохранить файл в другой кодировке, то начинает плеваться другими ошибками - было 4, взял оригинальный файл стало 1. WTF?! :scratch:


Добавлено:
Сообщение автоматически объединено:

_UIA_GetElementFromHandle - Почему вот это возвращает ERROR 0 и пустое значение ?!?!
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,958
Репутация
1,448
SuperSonic
Мне совершенно всё равно, кто вы там у мамы, но я точно не ясновидящий. Без кода я проблему не решу.
А по поводу кодировки... Большинство элементов возвращает текст в ANSI, реже в UTF-16LE. Поэтому, если у вас в скрипте русский текст в UTF-8, то, вероятно, вы его не найдёте.


Добавлено:
Сообщение автоматически объединено:

SuperSonic [?]
возвращает ERROR 0 и пустое значение
А вы, что, пытаетесь значение _UIA_GetElementFromHandle в консоль вывести?
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
У меня нет в коде нигде русского текста в отличие от вашей UDF.

Да какой там код... 3 строчки

Код:
Run("TU.EXE")
Local $_hWnd = WinWait("Total Uninstall Ultimate Edition","",30); Тут все отлично возвращает $_hWnd

; Создание элемента с использованием дескриптора окна
$oParent = _UIA_GetElementFromHandle($_hWnd); - ОШИБКА 0 Результат ПУСТ
а если запустить вот так:
$oParent = _UIA_GetElementFromHandle(WinGetHandle("Total Uninstall Ultimate Edition")); - Приложение падает в Not Responding

ConsoleWrite("PARENT: " & $oParent & " ERROR: " & @error)

все финиш






Добавлено:
Сообщение автоматически объединено:

А вы, что, пытаетесь значение _UIA_GetElementFromHandle в консоль вывести?
Это уже от безысходности.


Добавлено:
Сообщение автоматически объединено:

Вот такое содержимое ошибки мне выдает windows когда приложение падает в not responding
Код:
Description:
  A problem caused this program to stop interacting with Windows.

Problem signature:
  Problem Event Name:	AppHangB1
  Application Name:	Tu.exe
  Application Version:	6.14.0.310
  Application Timestamp:	55683aff
  Hang Signature:	4216
  Hang Type:	0
  OS Version:	6.1.7601.2.1.0.256.4
  Locale ID:	1049
  Additional Hang Signature 1:	4216bcef3f01d01eda08c7ad2d499542
  Additional Hang Signature 2:	6ca9
  Additional Hang Signature 3:	6ca9d21ad33603cc29ec539fdec53a18
  Additional Hang Signature 4:	4216
  Additional Hang Signature 5:	4216bcef3f01d01eda08c7ad2d499542
  Additional Hang Signature 6:	6ca9
  Additional Hang Signature 7:	6ca9d21ad33603cc29ec539fdec53a18

Вот такой код отправляет приложение в нокаут:
Код:
Run("TU.EXE")
Local $_hWnd = WinWait("Total Uninstall Ultimate Edition","",30);
$oParent = _UIA_GetElementFromHandle($_hWnd)
If Not @error Then
    $oList = _UIA_GetControlTypeElement($oParent, $UIA_TreeControlTypeId, "Installed programs")
    ConsoleWrite("RESULT: " & @error)
EndIf
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,958
Репутация
1,448
SuperSonic
Да, действительно. Приложение "Total Uninstall 6" не поддерживает работу с интерфейсом IUIAutomation. Об этом говорит появление окон "Invalid variant operation" при работе Inspect с этим приложением. Также я проверил некоторые функции поиска - все возвращают ошибки создания объектов. Так что, в этой теме, я вам ничем помочь не смогу.
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
Об этом говорит появление окон "Invalid variant operation" при работе Inspect с этим приложением.
У меня такое окно не появляется :blink:

Ну по крайней мере на Win 7 Inspect прекрасно "видит" эту софтину


Добавлено:
Сообщение автоматически объединено:

:shok: только сказал, что оно у меня не появляется и на тебе - появилось
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,958
Репутация
1,448
SuperSonic [?]
У меня такое окно не появляется
Если запустить Inspect или скрипт с правами администратора, то появляется на кнопках панели и в статус-баре.
А если без прав администратора, то все элементы определяются, как панели и, естественно, не работают должным образом.
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
Я тут маленько тестирую данную UDF, но пока тщетно (я могу обвинить, конечно свои кривые руки, но не в данном случае). Взял значит я пример с Google Chrome, все аккуратно скопипастил, нажал Run, открылся Google Chrome и ..... усе. т.е. короче на этом все, никаких тебе новых вкладок ничего. В консоле ошибок нет. :scratch:

То ли у меня Windows кривой, то ли цыгане прокляли я x.з. Запустил Inspect и вижу вот такую картину - вот то, что там наверху квадратиком обозначено, это мне inspect показывает расположение кнопки "New Tab". :shok:

ЩИТОЗНХ ?! Это нормально?


Добавлено:
Сообщение автоматически объединено:

PS. Не работает, т.е. промахивается ф-я _UIA_ElementMouseClick, а _UIA_ElementDoDefaultAction пока оправдывает свое имя и четенько все выполняет.

Так что чую с веб-контентом и кликами по всяким ссылкам/кнопкам при помощи _UIA_ElementMouseClick у меня будет полный пападопулос.
 

Вложения

  • 123.gif
    123.gif
    37.6 КБ · Просмотры: 22
A

Alofa

Гость
SuperSonic
SuperSonic сказал(а):
... промахивается ф-я _UIA_ElementMouseClick...
Вы тестировали "Example.au3", там как раз:
Код:
; Поиск кнопки с именем "Новая вкладка" и клик по ней
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Новая вкладка")
_UIA_ElementMouseClick($oElement)
что не работает?
Ах да, я и забыл:
SuperSonic сказал(а):
... свои кривые руки... ... у меня Windows кривой...
(Учтите, мысли материальны.)
Там, к стати еще и есть такой комментарий:
Код:
; Запуск Chrome с параметром --force-renderer-accessibility
; При отсутствии этого параметра доступ к элементам страницы будет запрещён

OffTopic:
Странно, что автор не включил его в шапку темы.

Но хотя в данном случае (при добавлении новой вкладки) он не нужен.
Вот у меня, к примеру не чистый Chrome, а так вот работает:
Код:
#include "UIAutomate.au3"

; Запуск Chrome с параметром --force-renderer-accessibility
; При отсутствии этого параметра доступ к элементам страницы будет запрещён

; Run(@ProgramFilesDir & "\Google\Chrome\Application\chrome.exe --force-renderer-accessibility")
Run("C:\Program Files (x86)\SRWare Iron\chrome.exe")

$hWnd = WinWaitActive("[REGEXPCLASS:.*Chrome.*]", "", 3)
If Not $hWnd Then Exit

; Создание элемента с использованием дескриптора окна
$oParent = _UIA_GetElementFromHandle($hWnd)

; Поиск кнопки с именем "Новая вкладка" и клик по ней
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Новая вкладка")
_UIA_ElementMouseClick($oElement)
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
Там, к стати еще и есть такой комментарий:
Если вы чем-то там запрещенным упоролись так что мозг в кашу, то хотя бы не палитесь так жестко. (я понимаю что сейчас вечер субботы) Либо тщательнее надо протирать зырки перед прочтением поста.

Only for you (спецом дополнил свой предыдущий пост, дабы исключить ответы вроде твоих):
Добавлено: Сегодня в 20:56:13
PS. Не работает, т.е. промахивается ф-я _UIA_ElementMouseClick, а _UIA_ElementDoDefaultAction пока оправдывает свое имя и четенько все выполняет.

Так что чую с веб-контентом и кликами по всяким ссылкам/кнопкам при помощи _UIA_ElementMouseClick у меня будет полный пападопулос.

Там, к стати еще и есть такой комментарий:
:ok:

(Учтите, мысли материальны.)
Это да правда, вот думал я, что мне ответит какой-нибудь уникум про --force-renderer-accessibility и вот спустя 2 часа он материализовался :smile:
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
Alofa сказал(а):
SuperSonic сказал(а):
Alofa сказал(а):
... что не работает?..
Серьезно? Ладно поясню на более примитивном уровне:

1. _UIA_ElementMouseClick - не работает, т.е. кнопка не нажимается.
2. _UIA_ElementDoDefaultAction - нормально работает, т.е. кнопка новой вкладки нажимается (и да вкладка открывается).

Далее я приложил скрин, где мне приложение Inspect отображает кнопку открытия новой вкладки не в том месте, где она реально расположена. Могу предположить, что UDF видит такие же неверные координаты кнопки и кликает по ним, и именно поэтому вкладка не открывается. Тоже самое касается и ВЕБ'a _UIA_ElementMouseClick кликает по абсолютно неверным координатам. Проблема понятна?
 

SuperSonic

Новичок
Сообщения
25
Репутация
1
Ну это да. У меня разрешение 2880х1800 и DPI 199% :guitar:
 
Верх