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

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

Онлайн InnI [?]

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

  • Автор темы
  • Репутация: 916
    • Награды
  • Версия AutoIt: 3.3.14.0
Обновление до версии 1.1:
- добавлена функция _UIA_ElementGetPreviousNext() для поиска предыдущего и следующего элементов того же уровня
- добавлена возможность вывода ошибок в консоль: глобальный переключатель $UIA_ConsoleWriteError (включён по умолчанию)
- в CUIAutomation2.au3 добавлены директивы #Au3Stripper_Off и #Au3Stripper_On для идентификаторов свойств и типов

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

Re: UIAutomate - автоматизация нестандартных элементов GUI
« Ответ #15 Отправлен: Декабрь 05, 2014, 18:47:21 »

Оффлайн rivega [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
Хорошего времени суток.

Подскажите пожалуйста, пытаюсь сделать регистрацию на сайте(в коде видно что за сайт)
У меня 2 вопроса:
1. функция ожидания загрузки страницы вываливается с ошибкой 4(превышен интервал ожидания, вываливается практически сразу, 5 сек не проходит)
2.мне не получается обратится к кнопке "вход"


Подскажите пожалуйста что не так делаю.



(нажмите для показа/скрытия)

Онлайн InnI [?]

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

  • Автор темы
  • Репутация: 916
    • Награды
  • Версия AutoIt: 3.3.14.0
rivega  [?]
Цитировать
5 сек не проходит
Проходит, можете замерить при помощи TimerDiff(). Я только не пойму, почему вы ожидаете Edit с именем "Войти". У меня это - кнопка.

Цитировать
не получается обратится к кнопке "вход"
Потому что "Вход" - это часть имени (там в начале хитрый значок ещё есть). Чтобы искать по части имени нужно параметр $fInStr установить в True.
В итоге получится
(нажмите для показа/скрытия)

Оффлайн rivega [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
Спасибо огромное за быстрый ответ.
и отдельно спасибо за дальнейшие шаги.

Про имя все понял(смотрел код страницы и там конечно же значка не было )

у меня код выдает при ожидании загрузки(пытался ставить больше 5 рандомных секунд...и все равно)
Код: AutoIt [Выделить]
 _UIA_WaitControlTypeElement : превышено время ожидания



а у Вас срабатывает?

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

Re: UIAutomate - автоматизация нестандартных элементов GUI
« Ответ #18 Отправлен: Январь 23, 2015, 21:39:45 »

Онлайн InnI [?]

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

  • Автор темы
  • Репутация: 916
    • Награды
  • Версия AutoIt: 3.3.14.0
rivega  [?]
Цитировать
смотрел код страницы
Для данной UDF лучше использовать утилиту Inspect.

Цитировать
а у Вас срабатывает?
У меня загрузка длится 3-4 секунды. Но пару раз было в районе восьми.
Измерьте реальное время загрузки и установите его вместо нуля
(нажмите для показа/скрытия)
Или просто оставьте ноль - бесконечное ожидание.

Оффлайн rivega [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
У меня на стационарном ПК все получилось, на ноутбуке нет-скрипт(с бесконечным ожиданием) просто ждет загрузки страницы(хотя она уже загрузилась)
Windows и там и там 7, Сhrome на ПК  39.0.2171.95 dev-m, а на ноуте   40.0.2214.91 m.
Может от этого зависеть?

Онлайн InnI [?]

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

  • Автор темы
  • Репутация: 916
    • Награды
  • Версия AutoIt: 3.3.14.0
rivega  [?]
Цитировать
Может от этого зависеть?
Сложно сказать... Я проверяю на стационаре Win7 x86, Chrome 40.0.2214.91 m. Проблем с кнопкой не наблюдаю.
Попробуйте подождать чего-нибудь другого - там много разных элементов (телефон, кнопка счёта, поле документа)
(нажмите для показа/скрытия)

Оффлайн rivega [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
Хорошо, спасибо. Буду разбираться.


Добавлено: Январь 24, 2015, 15:09:34
Есть наблюдение что на ноутбуке у меня хром был запущен и работал(открыто несколько вкладок)....если запускаю скрипт то вероятно хром открывается не в режиме "--force-renderer-accessibility"

Если закрываю хром полностью и запускаю скрипт все срабатывает как надо.


Вопрос- пароль и логин вводятся как будто их по букве с клавиатуры вводят(медленно) и между вводом пароля и логина заметная пауза. Это нормальная работа или можно ускорить?(или от ПК зависит)
« Последнее редактирование: Январь 24, 2015, 15:09:34 от rivega, Причина: Объединение сообщений »

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

Re: UIAutomate - автоматизация нестандартных элементов GUI
« Ответ #22 Отправлен: Январь 24, 2015, 13:17:19 »

Онлайн InnI [?]

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

  • Автор темы
  • Репутация: 916
    • Награды
  • Версия AutoIt: 3.3.14.0
rivega  [?]
Цитировать
по букве с клавиатуры вводят(медленно)
Chrome не поддерживает прямую установку текста в эти поля. Поэтому варианта два:
1. Ускорить нажатия клавиш в Send()
(нажмите для показа/скрытия)
2. Использовать буфер обмена
(нажмите для показа/скрытия)

Оффлайн rivega [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
Понял. спасибо.

Оффлайн rivega [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
Обновление до версии 1.1:
- добавлена функция _UIA_ElementGetPreviousNext() для поиска предыдущего и следующего элементов того же уровня
- добавлена возможность вывода ошибок в консоль: глобальный переключатель $UIA_ConsoleWriteError (включён по умолчанию)
- в CUIAutomation2.au3 добавлены директивы #Au3Stripper_Off и #Au3Stripper_On для идентификаторов свойств и типов

Есть ли возможность сделать не большой пример по функции _UIA_ElementGetPreviousNext()?



Код: AutoIt [Выделить]
$oPreviosnext=_UIA_ElementGetPreviousNext($i)                                                                $Previos=_UIA_ElementGetPropertyValue($oPreviosnext[0],"Name")
MsgBox("","", $Previos)
 


что я не правильно делаю?

Онлайн InnI [?]

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

  • Автор темы
  • Репутация: 916
    • Награды
  • Версия AutoIt: 3.3.14.0
rivega  [?]
Цитировать
что я не правильно делаю?
Если $i - это элемент (объект), то всё правильно. В противном случае в консоле SciTE должна быть ошибка: _UIA_ElementGetPreviousNext : параметр не является объектом.

Цитировать
пример по функции _UIA_ElementGetPreviousNext()
Предыдущий/следующий элемент для пункта меню "Вид" всплывающего меню рабочего стола Windows 7
(нажмите для показа/скрытия)

Оффлайн rivega [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
На главной странице сайта все получается))

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


дальше на сайте появляется всплывающее окно(по типу окна регистрации) и из него требуется считывать цифры, на прямую обратится не могу, тк не знаю name(как раз те цифры которые нужно считать........)(до него есть TextcontroltypeID, после него ButtoncontroltypeID)

Онлайн InnI [?]

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

  • Автор темы
  • Репутация: 916
    • Награды
  • Версия AutoIt: 3.3.14.0
rivega  [?]
Цитировать
предыдущий и следующий обьекты не находит
Потому что их нет. В данной функции предыдущий/следующий - это элементы одного уровня вложенности. Например (см. вложение). Для поля "Пароль" предыдущим будет поле "E-mail", а следующим - пустой элемент. Этот пустой элемент является родительским по отношению к флажку "Запомнить меня", а следующим для него будет пустой элемент, который является родителем для кнопки "Войти". Но ни у флажка ни у кнопки нет предыдущего/следующего - они единственные в своём уровне вложенности.

Цитировать
цифры которые нужно считать
Если Inspect ни в одном свойстве эти цифры не отображает, то считать их не получится.

Цитировать
не знаю name
Не обязательно искать элемент по имени. Можно искать почти по любому другому свойству, которые отображает Inspect. Например, поле для ввода пароля можно найти так
Код: AutoIt [Выделить]
_UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", True, "IsPassword")

Попробуйте найти такое свойство, которое отличает нужный вам элемент от других.

Неблагодарное это дело - Chrome автоматизировать :stars:


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Оффлайн rivega [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
Проблема в том что кроме имени ничем не отличается((((


Если не Chrome...то в какую сторону смотреть?

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

Re: UIAutomate - автоматизация нестандартных элементов GUI
« Ответ #29 Отправлен: Январь 27, 2015, 14:37:49 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
54885 Просмотров
Последний ответ Сентябрь 22, 2010, 22:13:33
от CreatoR
18 Ответов
12370 Просмотров
Последний ответ Сентябрь 18, 2011, 20:49:26
от Zalman1980
9 Ответов
4992 Просмотров
Последний ответ Март 12, 2012, 00:33:05
от cobra2029
0 Ответов
1811 Просмотров
Последний ответ Май 07, 2012, 15:00:44
от Dedullika
18 Ответов
4400 Просмотров
Последний ответ Октябрь 17, 2012, 00:07:30
от Kaster
0 Ответов
1843 Просмотров
Последний ответ Декабрь 02, 2012, 10:15:22
от madmasles
6 Ответов
3125 Просмотров
Последний ответ Декабрь 10, 2012, 11:30:14
от Zergii
3 Ответов
1743 Просмотров
Последний ответ Декабрь 21, 2014, 19:24:21
от brain
8 Ответов
1960 Просмотров
Последний ответ Ноябрь 26, 2015, 17:54:56
от Garrett
22 Ответов
1787 Просмотров
Последний ответ Июнь 09, 2017, 01:12:34
от Alofa