2015-05-07 8 views
3

вызов всем вам AutoHotKey мастеров:Найти и заполнить поле ввода с AutoHotKey

Дайте нам функцию, которая будет Найти и переместить курсор к полю ввода (например, LoginName) и, в качестве альтернативы отправить ввод текста , Для старых, ленивых хакеров, как я просто возился с АХК, это будет выглядеть следующим образом:

FindFillField(*elementid*,*sendtext*,*alt-text*) 

Где elementid находится в HTML-идентификатор для поля, например, USERNAME, , где sendtext - это текст для заполнения и , где alt-text может быть дополнительным, конкретным текстом, который поможет определить поля.

Дополнительные, необязательные параметры всегда полезны для округления странных случаев, поэтому пусть ваши фантазии бегут!

Для старожилов, подобных мне, и для всех это было бы благословением при создании простых макросов входа.

+0

Это может быть полезно: [Пример навигации по сайту] (https://autohotkey.com/board/topic/39048-example-of-navigating-a-website/) и [искать кнопку на веб-странице и нажимать на нее?] (Https : //autohotkey.com/board/topic/122175-search-a-button-on-a-web-page-and-click-on-it/) –

ответ

1

Вы всегда можете использовать параметр {TAB}. Откройте веб-сайт и нажмите клавишу TAB, пока не достигнете поля ввода и не подсчитайте, сколько раз вы его ударили. Затем выполните Отправить {TAB ##}. Я использовал ниже, чтобы вставить имя, второе имя, фамилию и 2 других идентификатора в веб-форму. Переменные были введены в созданную графическую форму.

Send {TAB 41} 
Send %firstn% 
Send {TAB} 
Send %middle% 
Send {TAB} 
Send %lastn% 
Send {TAB} 
Send %deas% 
Send {TAB} 
Send %npis% 
Send {TAB 3} 
Send {N} 
Send {TAB 2} 
Send {ENTER} 
1

Вы можете отправить текст в поле ввода с помощью следующего кода:

wb.document.getElementById("login-username").value := "myUserName" 

Где wb является объектом COM, login-username является идентификатором поля ввода, и myUserName является то, что вы хотите вход.

При заказе удостоверения личности вы также можете найти поле ввода по имени getElementsByName(...), название тега getElementsByTagName(...) или название класса getElementsByClassName(...). Я нашел this tutorial, чтобы быть полезным. Используйте Chrome или Firefox, чтобы узнать, как определить поле ввода (щелкните правой кнопкой мыши и нажмите «элемент проверки»).

Если вы хотите, чтобы переместить курсор в поле ввода, используйте

wb.document.getElementById("login-username").focus() 

Вот полный пример, с помощью IE и страницы входа переполнением стека:

; Create IE instance 
wb := ComObjCreate("InternetExplorer.Application") 
wb.Visible := True 
wb.Navigate("https://stackoverflow.com/users/login") 
; Wait for page to load: 
While wb.Busy or wb.ReadyState != 4 
    Sleep, 100 
; Press "Log in using Stack Exchange" 
wb.document.getElementById("se-signup-legend").click() 
While wb.Busy or wb.ReadyState != 4 
    Sleep, 100 
; EITHER focus on the input field: 
wb.document.getElementsByName("email")[0].focus() 
; OR send text directly to the field: 
wb.document.getElementsByName("email")[0].value := "[email protected]"