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

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

Оффлайн InnI [?]

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

  • Автор темы
  • Репутация: 856
    • Награды
  • Версия 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 Гуру
  • *****
  • Сообщений: 3272

  • Автор темы
  • Репутация: 856
    • Награды
  • Версия 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 Гуру
  • *****
  • Сообщений: 3272

  • Автор темы
  • Репутация: 856
    • Награды
  • Версия 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 Гуру
  • *****
  • Сообщений: 3272

  • Автор темы
  • Репутация: 856
    • Награды
  • Версия 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 Гуру
  • *****
  • Сообщений: 3272

  • Автор темы
  • Репутация: 856
    • Награды
  • Версия 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 Гуру
  • *****
  • Сообщений: 3272

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

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

Оффлайн rivega [?]

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

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


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

Оффлайн InnI [?]

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

  • Автор темы
  • Репутация: 856
    • Награды
  • Версия 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 Ответов
41270 Просмотров
Последний ответ Сентябрь 22, 2010, 22:13:33
от CreatoR
18 Ответов
11665 Просмотров
Последний ответ Сентябрь 18, 2011, 20:49:26
от Zalman1980
9 Ответов
4690 Просмотров
Последний ответ Март 12, 2012, 00:33:05
от cobra2029
0 Ответов
1731 Просмотров
Последний ответ Май 07, 2012, 15:00:44
от Dedullika
18 Ответов
4096 Просмотров
Последний ответ Октябрь 17, 2012, 00:07:30
от Kaster
0 Ответов
1725 Просмотров
Последний ответ Декабрь 02, 2012, 10:15:22
от madmasles
6 Ответов
2935 Просмотров
Последний ответ Декабрь 10, 2012, 11:30:14
от Zergii
3 Ответов
1589 Просмотров
Последний ответ Декабрь 21, 2014, 19:24:21
от brain
8 Ответов
1691 Просмотров
Последний ответ Ноябрь 26, 2015, 17:54:56
от Garrett
8 Ответов
253 Просмотров
Последний ответ Вчера в 01:03:12
от dr.room