51 (изменено: serzh82saratov, 2014-08-08 19:17:13)

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

Ну ctrl+a ctrl+c конечно не кошерно. Там же этот текст в

<div class=" alert alert-danger " id="static">

, из него может читать.
Да, и это:

While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
    Sleep, 10  

работает у меня в данном случае.

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

52 (изменено: Malcev, 2014-08-08 19:20:31)

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

После клика, нужно дождаться полной загрузки страницы, у вас же не дожидается и потом вывести надпись "Найдено".
У вас же сразу перескакивает на яндекс. Проверяю на IE11.
В <div class=" alert alert-danger " id="static"> - всегда пусто.

53

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

И я проверяю на IE11(всё работает как надо), другу дал проверить(у него IE9) - работает как надо.

Windows 10 x64

54

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

То есть код из 48 сообщения у вас выводит табличку "найдено"?

55

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

Да, сначала выходит табличка "Найдено", а потом происходит навигация на сайт Яндекса.

Windows 10 x64

56

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

Странно. На 2 машинах работает, а на 2 нет.

57

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

В <div class=" alert alert-danger " id="static"> - всегда пусто.

Да там не всё просто, если запутить IE в Gui АНК:

Gui Add, ActiveX, xm w980 h640 vWB, Shell.Explorer

то должно извлекать текст (не проверял), или же после запуска получать IID_IHTMLWindow2, как в AhkSpy.


 ; направить мышь на окно и нажать 1
 ; способ без мыши не знаю
1::
    MouseGetPos, , , , HWND_3, 3  
    MsgBox % WBGet(HWND_3).document.querySelector("div[class="" alert alert-danger ""][id=""static""]").outerText 
    Return
    
WBGet(hwnd)   {
    static msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
        , IID_IHTMLWindow2 := "{332C4427-26CB-11D0-B483-00C04FD90119}"
    SendMessage, msg,,,, ahk_id %hwnd%
    DllCall("oleacc\ObjectFromLresult", "Ptr", ErrorLevel, "Ptr", 0, "Ptr", 0, PtrP, pdoc) 
    Return ComObj(9,ComObjQuery(pdoc,IID_IHTMLWindow2,IID_IHTMLWindow2),1), ObjRelease(pdoc)
}
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

58

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

Наверное все дело в какой-то настройке интернет эксплорера.
Вот только как узнать в какой?

59

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

Наврядли, скорее всего тут нужен спец в СОМ объектах.

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

60

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  
str = Unable to create account: This e-mail address is already taken
elements := oDoc.body.all
Loop % elements.length
{
    itm:=elements[A_Index-1].InnerText
    If InStr(itm, str) {
                MsgBox, Найдено!
            }    
}
oIE.navigate("ya.ru")   
Windows 10 x64

61

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

Не находит.

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

62

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

Странно, у меня аж 4 раза нашло.

Windows 10 x64

63

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

Или так можно, 7 раз находит:

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  
str = Unable to create account: This e-mail address is already taken
Loop % oDoc.all.length {
    itm:=oDoc.all.item[A_Index-1]
    If InStr(itm.innertext, str) {
               MsgBox, Найдено!
            }    
}
oIE.navigate("ya.ru")   
Windows 10 x64

64

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

Повторюсь, на 2 машинах находит, на 2 нет.
На всех win7 64 bit.
Не понимаю в чем загвоздка.

65

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

Вроде разобрался.
Все дело в плагинах к IE.
Должен быть установлен либо Adobe Acrobat и соответственно в Current loaded add-ons быть запущенным Adobe PDF Link Helper либо установлен оффис и соответственно в Current loaded add-ons быть запущенным Office Document Cache Handler.

66

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

Вопрос не совсем по теме, попробую задать.
Есть запущенный IE(не через ComObjCreate), как можно вытащить текст со страницы в HTML виде?

Windows 10 x64

67 (изменено: Malcev, 2014-08-13 21:56:03)

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

http://forum.script-coding.com/viewtopic.php?id=9515

68

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

Хотелось бы обойтись без копирования в буфер обмена. Возможно это как то можно реализовать с помощью Acc библиотеки, но я в ней не силен.

Windows 10 x64

69

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

Не понимаю, зачем тут буфер обмена, есть же просто - outerHTML.

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

70

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

Есть, но как я получу текст в HTML виде не создав объект InternetExplorer.Application через скрипт? IE я запускаю вручную и нужно получить текст со всей страницы.

Windows 10 x64

71

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

Есть, но как я получу текст в HTML виде не создав объект InternetExplorer.Application через скрипт?

Его же можно получить:

ControlGet, hwnd, HWND, , Internet Explorer_Server1, ahk_class IEFrame
pwin := WBGet(hwnd)
MsgBox % pwin.document.body.outerHTML
 
WBGet(hwnd)   {
    static msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
        , IID_IHTMLWindow2 := "{332C4427-26CB-11D0-B483-00C04FD90119}"
    SendMessage, msg,,,, ahk_id %hwnd%
    DllCall("oleacc\ObjectFromLresult", "Ptr", ErrorLevel, "Ptr", 0, "Ptr", 0, PtrP, pdoc)
    Return ComObj(9,ComObjQuery(pdoc,IID_IHTMLWindow2,IID_IHTMLWindow2),1), ObjRelease(pdoc)
}
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

72

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

Malcev
Кстати так и без плагинов вроде работает:


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
   
loop
{  
    ControlGet, hwnd, HWND, , Internet Explorer_Server1, ahk_id %oIEHWND% 
    text := WBGet(hwnd).document.querySelector("div[class="" alert alert-danger ""][id=""static""]").outerText
    If InStr(text, "Unable to create account: This e-mail address is already taken")
        MsgBox % text
    sleep, 100
}  
Return
 
WBGet(hwnd)   {
    static msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
        , IID_IHTMLWindow2 := "{332C4427-26CB-11D0-B483-00C04FD90119}"
    SendMessage, msg,,,, ahk_id %hwnd%
    DllCall("oleacc\ObjectFromLresult", "Ptr", ErrorLevel, "Ptr", 0, "Ptr", 0, PtrP, pdoc)
    Return ComObj(9,ComObjQuery(pdoc,IID_IHTMLWindow2,IID_IHTMLWindow2),1), ObjRelease(pdoc)
}
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

73

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

Да. Работает костыль .
А можешь объяснить какое отношение имеют те плагины к нормальной работе InternetExplorer.Application?

74 (изменено: serzh82saratov, 2014-08-14 13:00:10)

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

Да тут вообще одни загадки. Ты заметил что получение хэндла у меня в цикле? Так вот это потому, что он почему то меняется в процессе загрузки O_o.

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

75

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

А есть ли какой-то способ узнать, что страница не загрузилась помимо, как:

While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10
text := oIE.document.documentElement.InnerText
If InStr(text, "This page can’t be displayed")
   msgbox