1 (изменено: art, 2014-01-04 12:06:12)

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

Здравствуйте, уважаемые участники форума!

Подскажите пожалуйста как оптимально реализовать заполнение формы на сайте? В частности непонятны моменты:

1. Как научить программу вставлять информацию из файла?
2. Как указать какую информацию в какое поле вставить? На ум приходят только Tab .
3. Как работать с выпадающими меню, чекбоксами и т.п?

http://htmlbook.ru/files/images/practical/24.png

2

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

Это настолько нетривиальная задача?

3

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

Для Ивана Копылова, видимо, нетривиальная, раз ему скрипт для этого нужен.

4

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

Можно потренироваться для начала с командой Send и её разновидностями.

5 (изменено: BashkaMen, 2014-01-07 16:47:43)

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

Пробуй так:

F2::
sendinput, Иван{Tab}
sendinput, Копылов{Tab}
sendinput, Красн{Tab}
sendinput, ivan@kopylov.ru{Tab}
sendinput, pass
sendinput, pass
return

Последнее не получиться, потому что там рандомная картинка!
Если скрипт не работает знадчит комп не  успевает, тогда сделай так:

F2::
sendinput, Иван{Tab}
sleep 100
sendinput, Копылов{Tab}
sleep 100
sendinput, Красн{Tab}
sleep 100
sendinput, ivan@kopylov.ru{Tab}
sleep 100
sendinput, pass
sleep 100
sendinput, pass
return


Итого: Всё введется за 500 миллисекунд.

6

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

YMP пишет:

Для Ивана Копылова, видимо, нетривиальная, раз ему скрипт для этого нужен.

Хаха, смешно

Я тоже смотрел в сторону сенда и табов, спасибо за ответы!

7 (изменено: Mikki, 2014-01-08 14:03:59)

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

Автохоткей не умеет распознавать элементы на вэб страничках.

Если надо работать с интернет страничками то советую посмотреть в сторону питоновскиго модуля Selenium. Чудо как хорош 

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

8

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

Сумеет, если пользовать Automation посредством IE.

9

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

Mikki пишет:

Если надо работать с интернет страничками то советую посмотреть в сторону питоновскиго модуля Selenium. Чудо как хорош 

Давно пора на форуме создать подраздел посвященный средствам автоматизации и написанию скриптов в веб-браузерах

10 (изменено: serzh82saratov, 2014-04-21 19:16:43)

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.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.busy
        Sleep, 20   
    If (oDoc.querySelector("#captcha_image").src != "")
    {
        MsgBox Не правильно! Повторить
        GoTo Input
    } 
    oIE := "", oDoc := ""
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

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

А как быть с положительным/отрицательным ответом сервера?
Например, после успешной регистрации, появляется следующий класс:

<div class=" alert alert-info " id="static">
                        <span class="glyphicon glyphicon-info-sign">&nbsp;</span>
                Account created, please login
      </div>

А при неуспешной

                <div class=" alert alert-danger " id="static">
                        <span class="glyphicon glyphicon-remove-circle">&nbsp;</span>
                Unable to create account: E-mail do not match
      </div>

12 (изменено: serzh82saratov, 2014-04-21 23:32:26)

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

Может вопрос не понял. На каждом сайте по своему, если это не устраивает:

    If (oDoc.querySelector("#captcha_image").src != "")

значит проверяйте что знаете, я про avito не загонялся. Я собственно до успешной регистрации и не доходил.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13 (изменено: Malcev, 2014-04-21 23:38:14)

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

Я имею в виду, какой коммандой можно получить ответ от сайта об успешной регистрации?
Или все загонять в клипбоард и парсить?
Например данный сайт при неправильном имейл адресе выдает следующий ответ:

<div class="form-error">
  Введите корректный адрес электронной почты  </div>

Как его засунуть в автохотки для дальнейших действий?

14

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

Или все загонять в клипбоард и парсить?

Я Вас не пойму. Я конечно компетентного ответа никак не могу дать, но в примере идёт клик по кнопке - ожидание загрузки страницы - проверка есть ли капча.

    While, oIE.busy
        Sleep, 20   
    If (oDoc.querySelector("#captcha_image").src != "")

Знаю что это всё через **пу, но в силу моего дремучего дилетантизма, лучшего предложить не могу увы. Но клипбоард и парсинг - лучше? Объясните.

Например, после успешной регистрации, появляется следующий класс:

Или вам просто по аналогии не очевидно, что после загрузки после клика вы можете проверять значение чего сочтёте нужным.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

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

<div class="form-error">
  Введите корректный адрес электронной почты  </div>

Ну думаю сначало проверить основной признаки не удачи, ну а потом хоть парсить хтмл, хоть проверять все заранее известные элементы, тут дело ваше.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16 (изменено: Malcev, 2014-04-22 00:04:54)

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

Ну а можете привести пример, как в msgbox получить "Введите корректный адрес электронной почты" из этого появившегося кода без использования клипбоарда?

<div class="form-error">
  Введите корректный адрес электронной почты  </div>

То есть если появился класс form-error со значением "Введите корректный адрес электронной почты", то делаем то-то.

17

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

Не понял.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18

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

Подправил.

19 (изменено: serzh82saratov, 2014-04-22 01:13:23)

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.busy
    Sleep, 20    
oDoc := oIE.document 
oDoc.querySelector("#email").value := "@email"    
oDoc.querySelector("button[class=""btn btn-green""]").click() 
While, oIE.busy
    Sleep, 20    
Sleep, 120
oDoc := oIE.document 
If (oDoc.all[87].innertext = "Введите корректный адрес электронной почты ")
    MsgBox Введите корректный адрес электронной почты
Else
    MsgBox С почтой всё ок
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

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.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
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

21 (изменено: Malcev, 2014-04-22 01:26:34)

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

У меня срабатывает.
Надо просто задержку увеличить перед проверкой innertext
А почему вы указали длину 87?
Как вы ее обнаружили?

If (oDoc.all[87].innertext

И как быть если сайт вообще не загрузился?
Данный скрипт не смотря на это показывает, что все ОК.

22

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

А почему вы указали длину 87?
Как вы ее обнаружили?

Это индес элемента в коллекции, я не сторонник его указывать, но по имени указать не получилось. iWB2 Learner выдал 88 но не работало. Потому сам искал, но сам не пойму почему 87???  Я сначала смотрел этим:


Loop
    if instr(oIE.document.body.all[A_Index].innertext, "Введите корректный адрес электронной почты" ) 
        all .= A_Index "`n"
MsgBox %  all

Но тут не правильный отсчёт, надо с нуля. Сейчас 87 вообще всегда пусто. sergeiplugatyr как то писал код, я себе так переделал:


all := [], i := 0
elements := oIE.document.body.all
Loop % elements.length 
        all[A_Index] := "Порядковый номер: " elements[A_Index-1].sourceIndex 
        . "`nЭлемент: "elements[A_Index-1].InnerText 
        . "`nЕго класс: " elements[A_Index-1].ClassName 
        . "`nЕго ID: " elements[A_Index-1].ID 
MsgBox % "Длинна колекции: " elements.length    
        . "`nДлинна массива: " all.maxindex()
1::ToolTip % all[--i] "`n`nв массиве" i
2::ToolTip % all[++i] "`n`nв массиве" i

В надежде что iWB2 Learner ошибается, но нет.

И как быть если сайт вообще не загрузился?

Ну после 

While, oIE.busy
    Sleep, 20

Что нибудь проверять. Кашерного ответа у меня нет.

Данный скрипт не смотря на это показывает, что все ОК.

Это не скрипт, это догадки. У меня по сабжу вопросов не меньше чем у Вас.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

23

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

Пока ничего лучше, чем использовать поиск ближайшего слова находящегося к первому полю введения, потом посыл {esc}{tab}, ввод информации и получение ошибок через парсинг клипбоарда в цикле - ничего лучше не вижу.
Типа:

loop
{
   send, ^{vk41}^{vk43}   ; ctrl+a ctrl+c
   If InStr(Clipboard, RegOk1) or InStr(Clipboard, RegNotOk1)
      break
   sleep, 100
}

Где RegOk1, RegNotOk1 - возможные варианты ответа сервера.
Через IE так и не удалось получить вразумительного ответа от сервера, так как вначале страница загружается полностью, а потом догружается ответ от сервера.
Писал так:

While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy ; wait for the page to load
   Sleep, 10

24

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

Всё же не пойму, зачем клипбоард? Чем не устраивает:

MsgBox %  oDoc.querySelector("form").innerHTML

---

While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy ; wait for the page to load
   Sleep, 10

Да, правильно. Это я тут что то упростил.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

25

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

Потому что на некоторых сайтах таким образом я не могу получить ответ от сервера.
Например здесь вбейте любой логин и пароль и попробуйте получить

Unable to login: Invalid username or password.

У меня не получилось.
http://isr.coins4everyone.com/index.php?page=login

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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

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

Как сказал мой дед - Я твой дед

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")   
Как сказал мой дед - Я твой дед

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: Заполнение формы на веб-сайте

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

Как сказал мой дед - Я твой дед

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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

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

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

53

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

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

Как сказал мой дед - Я твой дед

54

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

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

55

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

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

Как сказал мой дед - Я твой дед

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

58

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

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

59

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

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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")   
Как сказал мой дед - Я твой дед

61

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

Не находит.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

62

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

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

Как сказал мой дед - Я твой дед

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")   
Как сказал мой дед - Я твой дед

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 виде?

Как сказал мой дед - Я твой дед

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

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

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

68

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

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

Как сказал мой дед - Я твой дед

69

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

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

70

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

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

Как сказал мой дед - Я твой дед

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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 Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

73

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

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

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

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

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

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

76

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

Я универсального не нашёл. Например есть сообщения о загрузке содержимого документа, но где то они работают, где то нет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

77 (изменено: Malcev, 2014-08-14 19:00:38)

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

Кстати при использовании ComObjCreate("InternetExplorer.Application")
в начале каждого скрипта прописываю следующий код, а то иногда зависает:

process = iexplore.exe
Loop
{
   prev := ErrorLevel
   Process, Close, %process%
   Process, Exist, %process%
}
until !ErrorLevel or (prev = ErrorLevel)

78 (изменено: Malcev, 2014-08-14 19:28:49)

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

Столкнулся с трудностью закачки файла.
Так не получается. Стопорится на клике.
Цель - после посылки клика получить мессадж бокс.
Какие могут быть еще варианты?

oIE := ComObjCreate("InternetExplorer.Application") 
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
oIE.navigate("http://www.imgsave.org/")
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10
SetTimer, Send, -500
oIE.document.querySelector("#localUP").click()

Send:
msgbox

79 (изменено: sergeiplugatyr, 2014-08-14 19:33:04)

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

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

Вроде как по Title вкладки можно.

Как сказал мой дед - Я твой дед

80 (изменено: Malcev, 2014-08-14 22:17:11)

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

В общем пока только так:

oIE := ComObjCreate("InternetExplorer.Application") 
oIE.visible := True, oIEHWND := oIE.HWND 
WinMaximize ahk_id %oIEHWND%  
oIE.navigate("http://www.imgsave.org/")
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10
FileDelete, %A_ScriptDir%/WinWait.ahk
FileAppend, 
(
#NoTrayIcon
WinWait, Choose File to Upload
WinActivate, Choose File to Upload
WinWaitActive, Choose File to Upload
ControlSetText, Edit1, "D:\1.jpg", Choose File to Upload
ControlClick, Button1, Choose File to Upload,,,, NA
ExitApp
), %A_ScriptDir%/WinWait.ahk
Run, %A_ScriptDir%/WinWait.ahk
oIE.document.querySelector("#localUP").click()
FileDelete, %A_ScriptDir%/WinWait.ahk
msgbox

81 (изменено: Malcev, 2014-08-18 18:56:55)

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

sergeiplugatyr пишет:

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

Вроде как по Title вкладки можно.

А как это сделать, наиболее правильным методом?
Через WinGetTitle?

82

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

Определить title:

h := ComObjCreate("InternetExplorer.Application")
h.visible := true
h.navigate("http://siteerrrrrror.org")
while h.busy || h.readyState <> 4
    continue
MsgBox, % h.document.title
h.quit()
Как сказал мой дед - Я твой дед

83

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

Спасибо!
А как получить в переменную, все что находится в классах text.
То есть типа:

While oIE.document.querySelector(".text").OuterHtml
   text .= oIE.document.querySelector(".text").OuterHtml

Или только скачивая все и потом уже RegexMatch?

84

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

Или только скачивая все и потом уже RegexMatch?

Думаю только так.

Как сказал мой дед - Я твой дед

85

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

А какой наиболее быстрый способ уведомления о загрузки страницы?
While, oIE.busy - тормозит частенько из-за загрузки всякого флеша и джава скриптов.
Сейчас я парсю oIE.document.documentElement.OuterHtml на нахождение определенного кода.
Может можно как-то быстрее?

86

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

Ну есть сообщения типа DocumentComplete. Но работают таковые (как я понял) не на всех сайтах.
Возможно из типичной функции:


IEBusy(O)  {  
    While !(O.readyState=4 && O.document.readyState="complete" && !O.busy)
        Sleep, 50
} 

Требуется только:

O.document.readyState="complete"
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

87 (изменено: Malcev, 2014-12-12 23:59:38)

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

Вот пример:

link = http://www.delfi.lv/

ComObjError(false)
oIE := ComObjCreate("InternetExplorer.Application")
oIE.visible := True, oIEHWND := oIE.HWND
WinMaximize ahk_id %oIEHWND%
oIE.navigate(link)
;While !ErrorLevel
;   ImageSearch, , , 0, 0, A_ScreenWidth, A_ScreenHeight, %A_ScriptDir%\picture.png
;While !instr(oIE.document.title, "delfi")
;While oIE.document.readyState != "complete"
While !instr(oIE.document.documentElement.OuterHtml, "raide")
   Sleep, 20
msgbox Loaded

Нужно чтобы как только появлялась начальная страница - появлялся бы msgbox.
Ни один из этих вариантов не срабатывает моментально, кроме imagesearch.
Есть идеи?

88

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

У меня, что то так выходит:


link = http://www.delfi.lv/
 
oIE := ComObjCreate("InternetExplorer.Application")
oIE.visible := True, oIEHWND := oIE.HWND
WinMaximize ahk_id %oIEHWND%
ComObjConnect(oIE, eventsclass)
oIE.navigate(link)  
Return

class eventsclass  {  
    DocumentComplete()  {  
        msgbox  
    } 
}

Но не уверен что понял:

как только появлялась начальная страница

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

89

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

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

как только появлялась начальная страница

Я имею в виду, как только мы видим ее зрительно.

90

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

FixIE пробовал?
И само собой - #Persistent .

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

91

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

И FixIE(0) ставил и FixIE(1) - msgbox выскакивает не загрузив страницу.

FixIE(0)
f11::
link = http://www.delfi.lv/
 
oIE := ComObjCreate("InternetExplorer.Application")
oIE.visible := True, oIEHWND := oIE.HWND
WinMaximize ahk_id %oIEHWND%
ComObjConnect(oIE, eventsclass)
oIE.navigate(link)  
Return

class eventsclass  {  
    DocumentComplete()  {  
        msgbox % oIE.document.documentElement.OuterHtml 
    } 
}

FixIE(Fix)  {
    Static Key := "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION"
    If A_IsCompiled
        ExeName := A_ScriptName
    Else
        SplitPath, A_AhkPath, ExeName
    If Fix
        RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 0
    Else
        RegDelete, HKCU, %Key%, %ExeName%
}

92

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

Ну их же несколько, посмотри с каким по счёту совпадает:


class eventsclass  {  
    DocumentComplete()  {    
        Static i := 0
        ToolTip % ++i 
    } 
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

93

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

В смысле фреймов несколько?
У меня показывает 12, но при запуске ничего не меняется и глючит.

class eventsclass  {  
    DocumentComplete(12)  {  
        msgbox % oIE.document.documentElement.OuterHtml 
    } 
}

Я плохо понимаю эту функцию.

94

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

В смысле фреймов несколько?

Да да да. Нужно ведь просто смотреть адрес загруженного фрейма, а я тут огород горожу.


class eventsclass  {  
    DocumentComplete(pDisp, URL)  {   
        if URL = http://www.delfi.lv/
            MsgBox
    } 
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

95 (изменено: Malcev, 2014-12-13 13:08:44)

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

А какое наименьшее значение может быть "pDisp"?
И зачем оно вообще нужно?
И после загрузки страницы мне надо переходить по новой ссылке.
Куда это вписывать?

96

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

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

97 (изменено: Malcev, 2014-12-13 13:39:58)

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

Вот решение:

link = http://www.delfi.lv/

ComObjError(false)
oIE := ComObjCreate("InternetExplorer.Application")
oIE.visible := True, oIEHWND := oIE.HWND
WinMaximize ahk_id %oIEHWND%
ComObjConnect(oIE, "IE_"), loading := true ; Connect IE object & set var "loading" as TRUE
oIE.navigate(link)
while, loading
   Sleep, 10
MsgBox, % oIE.document.documentElement.OuterHtml
return

IE_DocumentComplete() { ; the "IE_" prefix corresponds to the ComObjConnect() function above
   global loading := false ; Break the While-Loop
}

http://ahkscript.org/docs/commands/ComObjConnect.htm

98

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

А в чём отличие от 88 поста?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

99

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

В том, что там был вставлен msgbox в функцию и все из-за этого сильно глючило и не работало.
Не знаю почему.

100

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

Вставь таймер –1.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui