26

Re: AHK: Заполнение формы на веб-сайте

Ну вот смотрите, для гаранти ещё и тэги можно проверять.


oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("https://www.avito.ru/registration")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
    Sleep, 20  
Input:
    MsgBox Заполнить
    oDoc := oIE.document
    oDoc.querySelector("#name").value := "name"
    oDoc.querySelector("#email").value := "@email"    
    oDoc.querySelector("#phone").value := "557454554645"   
    oDoc.querySelector("#password").value := "*****************"   
    oDoc.querySelector("#confirm").value := "*****************"    
    oDoc.querySelector("#captcha").value := "не вижу"   
    oDoc.querySelector("#subscribe").checked := 0
    oDoc.querySelector("#comp").checked := 1
    MsgBox Зарегистрироваться 
    oDoc.querySelector("button[class=""btn btn-green""]").click() 
    While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
        Sleep, 20   
    MsgBox % src := oIE.document.querySelector(".form-wrapper").innerHTML
    
    Error1 = Введите корректный адрес электронной почты
    Error2 = Введите российский номер телефона в формате 8 XXX XXX XX XX
    
    If src ~= Error1 "|" Error2
    {
        MsgBox Не правильно! Повторить
        GoTo Input
    } 
    oIE := "", oDoc := ""
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

27

Re: AHK: Заполнение формы на веб-сайте

Я не про этот сайт говорю, а про другой.
В 25 сообщение.

28

Re: AHK: Заполнение формы на веб-сайте

Всё тоже самое:


oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("http://isr.coins4everyone.com/index.php?page=login")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
    Sleep, 20  
Input: 
    oDoc := oIE.document 
    oDoc.querySelector("input[name=""username""]").value := "gmail@gmail.com"
    oDoc.querySelector("input[name=""password""]").value := "password" 
    MsgBox Зарегистрироваться  
    oDoc.querySelector("input[class=""alt_btn""][type=""submit""]").click() 
    While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
        Sleep, 20    
    src := oIE.document.querySelector("#main").innerHTML  
    Error1 = <h4 class="errormsg">Unable to login: Invalid username or password.
    Error2 = Или ещё что то
    
    If src ~= Error1 "|" Error2
    {
        MsgBox Не правильно! Повторить
        GoTo Input
    } 
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

29

Re: AHK: Заполнение формы на веб-сайте

Да, действительно показывает.
А как вы узнали, что надо брать у #main, а не у #body

    src := oIE.document.querySelector("#main").innerHTML

И например тут, при заполнении полей скрипт не выводит в msgbox ответ от сервера
http://isr.coins4everyone.com/index.php?page=register

username = name
password = password123
email = gmail@gmail.com
pin = 0000
oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("http://isr.coins4everyone.com/index.php?page=register")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy ; wait for the page to load
   Sleep, 10
oDoc := oIE.document
oDoc.querySelector("input[name=""username""]").value := username
oDoc.querySelector("#pw_field").value := password
oDoc.querySelector("#pw_field2").value := password
oDoc.querySelector("input[name=""email1""]").value := email
oDoc.querySelector("input[name=""email2""]").value := email
oDoc.querySelector("input[name=""pin""]").value := pin
oDoc.querySelector("#tac").checked := 1
oDoc.querySelector("input[class=""alt_btn""][type=""submit""]").click() 
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy ; wait for the page to load
   Sleep, 10
src := oIE.document.querySelector("#main").innerHTML  
msgbox % src

30

Re: AHK: Заполнение формы на веб-сайте

А как вы узнали, что надо брать у #main, а не у #body

iWB2 Learner. ID body там нет.

И например тут, при заполнении полей скрипт не выводит в msgbox ответ от сервера

Не знаю, иногда выводит иногда нет, капризный какой то.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

31

Re: AHK: Заполнение формы на веб-сайте

Вот из-за этого я и думаю использовать клипбоард.

32

Re: AHK: Заполнение формы на веб-сайте

А почему у вас перед ID стоит "#" ?
А перед Class "." ?

oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("https://www.avito.ru/registration")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While, oIE.busy
    Sleep, 20    
oDoc := oIE.document 
oDoc.querySelector("#email").value := "@email"    
oDoc.querySelector("button[class=""btn btn-green""]").click() 
While, oIE.busy
    Sleep, 20    
MsgBox %  oDoc.querySelector("form").innerHTML

Что здесь есть form?
Я его там не могу найти, только form-wrapper.

33 (изменено: serzh82saratov, 2014-04-26 00:21:10)

Re: AHK: Заполнение формы на веб-сайте

А почему у вас перед ID стоит "#" ?
А перед Class "." ?

Таков синтаксис в данном случае, как и в CSS.

Что здесь есть form?
Я его там не могу найти, только form-wrapper.

Вот же:

<form class="b-form b-form-not***

Как раз если нет # или . то значит имеется ввиду тип название элемента.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

34 (изменено: Malcev, 2014-04-26 09:46:05)

Re: AHK: Заполнение формы на веб-сайте

А если я хочу после одного сайта перейти на следующий, то для этого мне нужно выйти из этого в начале 

oIE := ""

и потом создать заново

oIE := ComObjCreate("InternetExplorer.Application") 

?
Или можно продолжать навигацию в этом?

oIE.navigate("https://www.avito.ru/registration")   

И еще читал об oIE.Quit - оно равносильно oIE := "" ?
Может накините ссылок, где об этом разжевано?

35

Re: AHK: Заполнение формы на веб-сайте

А если я хочу после одного сайта перейти на следующий, то для этого мне нужно выйти из этого в начале

Самому интересно.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

36

Re: AHK: Заполнение формы на веб-сайте

Не понимаю как скачать установщик автохотки в IE11.
Как нажать кнопку Save и вывести msgbox когда загрузится.
Возможно ли это средствами InternetExplorer.Application?
Или надо копать ACCInfo?

oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("http://ahkscript.org/download/")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
   Sleep, 20
oIE.document.all[15].click() 

37

Re: AHK: Заполнение формы на веб-сайте

Не понимаю как скачать установщик автохотки в IE11.

Может просто так:


UrlDownloadToFile, http://ahkscript.org/download/ahk-install.exe, %A_Desktop%\ahk-install.exe 
MsgBox
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

38

Re: AHK: Заполнение формы на веб-сайте

Ну это я просто пример такой показал.
Цель - скачать файл через ComObjCreate("InternetExplorer.Application").

39 (изменено: Malcev, 2014-05-09 21:17:51)

Re: AHK: Заполнение формы на веб-сайте

Только через задницу выходит.

loop 100
{
   ControlGet, saveId, HWND,, DirectUIHWND1, ahk_class IEFrame
   ahkSaveId := "ahk_id " saveId
   Location := Acc_Get("Location", "4.3", 0, ahkSaveId)
   if (Location != "") and !(Location ~= "-")
      break
   sleep 100
}
RegExMatch(Location, "x(\d+) y(\d+) w(\d+) h(\d+)", Coord)
WinGetPos, X, Y,,, % ahkSaveId
xClick := Coord1 + Coord3//2 - X, yClick := Coord2 + Coord4//2 - Y
loop
{
   ControlClick, X%xClick% Y%yClick%, % ahkSaveId
   sleep, 500
   ControlSend,, {enter}, % ahkSaveId
   sleep, 500
   Name := Acc_Get("Name", "4.3", 0, ahkSaveId)
   if (Name != "Save")
      break
}

40 (изменено: Malcev, 2014-05-10 16:19:06)

Re: AHK: Заполнение формы на веб-сайте

А почему у вас перед ID стоит "#" ?
    А перед Class "." ?

Таков синтаксис в данном случае, как и в CSS.

А каков будет синтаксис если в название класса или айди будет пробел?
Так не прокатывает:

".download-mid-centered-block not-available-some-reason"

А так да -

"div[class=""download-mid-centered-block not-available-some-reason""]"

41

Re: AHK: Заполнение формы на веб-сайте

Только через задницу выходит.

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

А каков будет синтаксис если в название класса или айди будет пробел?

Не знаю, не сталкивался.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

42

Re: AHK: Заполнение формы на веб-сайте

Ссылку изначально не знаем. Она генерируется файлообменником.

43 (изменено: Malcev, 2014-08-08 16:52:14)

Re: AHK: Заполнение формы на веб-сайте

Как убрать фокус с поискового поля яндекса?
Я имею в виду, чтобы мышка там не мигала?
Так почему-то не получается.

oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("ya.ru")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy  
    Sleep, 20  
PostMessage, 0x201, 1, ((A_ScreenHeight-100<<16)^A_ScreenWidth-100), , ahk_class IEFrame
PostMessage, 0x202, 0, ((A_ScreenHeight-100<<16)^A_ScreenWidth-100), , ahk_class IEFrame  

44

Re: AHK: Заполнение формы на веб-сайте

Можно попробовать после загрузки передать фокус всей форме.

oIE.document.body.focus()
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

45 (изменено: Malcev, 2014-08-08 18:05:16)

Re: AHK: Заполнение формы на веб-сайте

Спасибо, работает.
Но столкнулся с ошибкой при навигации.
Пока только лезет в голову один вариант - перезапускать ComObjCreate("InternetExplorer.Application")

username = name
password = password123
email = gmail@gmail.com
pin = 0000
oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("http://lize.hashlink.eu/index.php?page=register")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy ; wait for the page to load
   Sleep, 10
oDoc := oIE.document
oDoc.querySelector("input[name=""username""]").value := username
oDoc.querySelector("#pw_field").value := password
oDoc.querySelector("#pw_field2").value := password
oDoc.querySelector("input[name=""email1""]").value := email
oDoc.querySelector("input[name=""email2""]").value := email
oDoc.querySelector("input[name=""pin""]").value := pin
oDoc.querySelector("#tac").checked := 1
oDoc.querySelector("input[class=""btn btn-success btn-sm""][type=""submit""]").click() 
;   While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy ; wait for the page to load
;   Sleep, 10   ; тут эта фунцция не срабатывает, поэтому использую клипбоард.
loop
{
   oIE.document.body.focus()
   Send, ^{vk41}^{vk43}   ; ctrl+a ctrl+c
   If InStr(Clipboard, "Unable to create account: This e-mail address is already taken")
      break
   sleep, 100
} 
sleep 1000
oIE.navigate("ya.ru")   

46

Re: AHK: Заполнение формы на веб-сайте

А для чего копировать весь текст со страницы? Если можно в переменную записать весь текст

text := oIE.document.documentElement.innerText

и потом проверять на наличие текста.

Windows 10 x64

47

Re: AHK: Заполнение формы на веб-сайте

Так не выйдет, так как если вставить в цикл, то text := oIE.document.documentElement.innerText не обновляется.
Да и надпись в переменной text "Unable to create account: This e-mail address is already taken" вообще не появляется.

48 (изменено: sergeiplugatyr, 2014-08-08 20:27:45)

Re: AHK: Заполнение формы на веб-сайте

Цикл не нужен, у меня так работает:

username = name
password = password123
email = gmail@gmail.com
pin = 0000
oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("http://lize.hashlink.eu/index.php?page=register")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10
oDoc := oIE.document
oDoc.querySelector("input[name=""username""]").value := username
oDoc.querySelector("#pw_field").value := password
oDoc.querySelector("#pw_field2").value := password
oDoc.querySelector("input[name=""email1""]").value := email
oDoc.querySelector("input[name=""email2""]").value := email
oDoc.querySelector("input[name=""pin""]").value := pin
oDoc.querySelector("#tac").checked := 1
oDoc.querySelector("input[class=""btn btn-success btn-sm""][type=""submit""]").click() 
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
    Sleep, 10  
text := oDoc.documentElement.InnerText
If InStr(text, "Unable to create account: This e-mail address is already taken ") {
    MsgBox, Найдено!
}
oIE.navigate("ya.ru")   
Windows 10 x64

49 (изменено: Malcev, 2014-08-08 18:50:19)

Re: AHK: Заполнение формы на веб-сайте

После выполнения этой секции:

username = name
password = password123
email = gmail@gmail.com
pin = 0000
oIE := ComObjCreate("InternetExplorer.Application") 
oIE.navigate("http://lize.hashlink.eu/index.php?page=register")   
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10
oDoc := oIE.document
oDoc.querySelector("input[name=""username""]").value := username
oDoc.querySelector("#pw_field").value := password
oDoc.querySelector("#pw_field2").value := password
oDoc.querySelector("input[name=""email1""]").value := email
oDoc.querySelector("input[name=""email2""]").value := email
oDoc.querySelector("input[name=""pin""]").value := pin
oDoc.querySelector("#tac").checked := 1
oDoc.querySelector("input[class=""btn btn-success btn-sm""][type=""submit""]").click() 

Должно быть по-любому найдено.
А в вашем варианте - не найдено.

50 (изменено: sergeiplugatyr, 2014-08-08 18:59:47)

Re: AHK: Заполнение формы на веб-сайте

Еще раз всё перепроверьте, мой вариант рабочий. После клика, нужно дождаться полной загрузки страницы.

Windows 10 x64