1

Тема: AHK: ошибка - "форма не заполнена"

Здравствуйте.

Столкнулся с проблемой. Пытаюсь ввести данные в форму (Input).

as_pro_input := pwb.document.getElementsByTagName("input")[0]
as_pro_input.value := Profession

Текст отображается в форме, но при нажатии кнопки далее сайт выдает ошибку - "форма не заполнена". 
https://imgur.com/ShfdSso

Так же у этого элемента есть параметр "Name", но на него сайт не реагирует совсем.

as_pro_input2 := pwb.document.getElementsByName("headline")[0]
as_pro_input2.value := Profession

Сам элемент: https://imgur.com/nxUWHtx

Единственный вариант, который работает у меня - вводить данные "вручную".

pwb.document.getElementsByTagName("input")[0].focus()
Send %Profession%

Подскажите, в чем я ошибся. Спасибо!

2

Re: AHK: ошибка - "форма не заполнена"

http://forum.script-coding.com/viewtopi … 16#p119016

3 (изменено: g0ss, 2018-12-05 13:48:25)

Re: AHK: ошибка - "форма не заполнена"

Спасибо за ответ. Похоже, что форма "засчитывает" введенные данные только при нажатии клавиш "a-z", "0-9". При том найти привязаные к этой форме ивенты я не смог (искал через плагин для хрома Visual Event).
Получившийся скрипт:

while !input := pwb.document.getElementsByTagName("input")[0]
	Sleep, 50
input.value := Profession
input.focus()
event := pwb.document.createEvent("KeyboardEvent")
event.initKeyboardEvent("keypress", true, true, pwb.document.parentWindow, "q", 0, "", false, "en-US")
input.dispatchEvent(event)

Пробовал разные параметры initKeyboardEvent, но пока ничего не получилось.

4

Re: AHK: ошибка - "форма не заполнена"

Приведите свой полный изначальный код.

5 (изменено: g0ss, 2018-12-05 14:03:15)

Re: AHK: ошибка - "форма не заполнена"

Тестирую в таком виде:

pwb := ComObjCreate("InternetExplorer.Application")
pwb.Visible := True

IfWinExist, Internet Explorer
{
	WinActivate
	WinMaximize
}

pwb.Navigate("https://www.artstation.com/myartstation/profile/edit")
While	pwb.readyState != 4 || pwb.document.readyState != "complete" || pwb.busy
	Sleep 1000

FileReadLine, Profession, C:\Users\PC\Dropbox\AS\Profession.txt, 1

while !input := pwb.document.getElementsByTagName("input")[0]
	Sleep, 50
input.value := Profession
input.focus()
event := pwb.document.createEvent("KeyboardEvent")
event.initKeyboardEvent("keydown", true, true, pwb.document.parentWindow, "q", 0, "", false, "en-US")
input.dispatchEvent(event)

MsgBox %Profession% done!

Дальше сам нажимаю кнопку продолжить и получаю "форма обязательна к заполнению"

6

Re: AHK: ошибка - "форма не заполнена"

Посылайте с помощью ControlSend.

7 (изменено: svoboden, 2018-12-08 08:56:51)

Re: AHK: ошибка - "форма не заполнена"

У меня в Imacros'е работает такой вариант:

EVENT TYPE=KEYPRESS CHAR="var"

8

Re: AHK: ошибка - "форма не заполнена"

Ну через Selenium тоже работает.
Вопрос же был, как я понял, сделать это через объектную модель IE.

9 (изменено: svoboden, 2018-12-10 00:18:26)

Re: AHK: ошибка - "форма не заполнена"

Ну, это понятно, что Selenium работает, он же через драйвер посылает события. Imacros - это простой javascript, который как-то посылает событие event. Я посчитал, что такой ответ будет полезным, т.к. тс искал рабочие эвенты.

10 (изменено: Malcev, 2018-12-09 18:36:20)

Re: AHK: ошибка - "форма не заполнена"

svoboden пишет:

Imacros - это простой javascript, который как-то посылает событие event.

Ну во-первых не простой (установщик 20 мб) и не только посылает через джаваскрипт.
Покажите весь свой код, который в IE заходит на эту страницу:
https://www.artstation.com/registration/signup
заполняет имя в * First name, нажимает sign me up, после чего имя считается физически нажатым (не написано First name is required).
Желательно чтобы запускалось через com объект.
https://autohotkey.com/boards/viewtopic … mp;t=35906
Тогда уже будет разговор предметный.

11 (изменено: svoboden, 2018-12-10 00:19:45)

Re: AHK: ошибка - "форма не заполнена"

Я просто хотел найти событие event и запустить его. Теперь ищу его в исходном коде плагина Imacros.
P.s. Если события Event в Imacros'е не существует, то тогда я ошибся.

12

Re: AHK: ошибка - "форма не заполнена"

svoboden пишет:

Теперь ищу его в исходном коде плагина Imacros

А у вас есть его исходный код?

13 (изменено: svoboden, 2018-12-09 23:57:39)

Re: AHK: ошибка - "форма не заполнена"

Так это же обычное javascript расширение, есть плагин Get CRX, им можно узнать.

14

Re: AHK: ошибка - "форма не заполнена"

У меня в расширении для хрома, возможно оно порезанное, этот код не работает:

EVENT TYPE=KEYPRESS SELECTOR="html>body>app-root>light-layout>div.wrapper>signup>div.container>div>div>div.panel.panel-default>div.panel-body>form>div.row>div:nth-child(1)>form-input>div>input" CHAR="test"

А в IE работает, но там в плагине идет куча dll.

15 (изменено: svoboden, 2018-12-10 02:02:01)

Re: AHK: ошибка - "форма не заполнена"

У меня в хроме так работает:

EVENT TYPE=CLICK SELECTOR="HTML>BODY>APP-ROOT>LIGHT-LAYOUT>DIV:nth-of-type(2)>SIGNUP>DIV>DIV>DIV>DIV:nth-of-type(5)>DIV:nth-of-type(2)>FORM>FORM-USERNAME>DIV>INPUT" BUTTON=0
EVENT TYPE=KEYPRESS SELECTOR="HTML>BODY>APP-ROOT>LIGHT-LAYOUT>DIV:nth-of-type(2)>SIGNUP>DIV>DIV>DIV>DIV:nth-of-type(5)>DIV:nth-of-type(2)>FORM>FORM-USERNAME>DIV>INPUT" CHAR="var"

И никаких DLL не создается в плагине. Только как найти код самой команды Event, вот это проблема.

16

Re: AHK: ошибка - "форма не заполнена"

Думаю нужно запустить этот код в IE, отмониторить созданные этим кодом события и попытаться их повторить.

17

Re: AHK: ошибка - "форма не заполнена"

Вот так работает:

oIE := ComObjCreate("InternetExplorer.Application")
oIE.Visible := True
oIE.Navigate("https://www.artstation.com/registration/signup")
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10

target := oIE.document.querySelector("input[name=""first_name""]")
target.value := "tester"
event := oIE.document.createEvent("Event")
event.initEvent("input", true, true)
target.dispatchEvent(event)

18 (изменено: svoboden, 2018-12-10 23:30:43)

Re: AHK: ошибка - "форма не заполнена"

Работает. Старый метод "initEvent", но даже в хроме работает, только нужно в: input[name=""first_name""] кавычки убрать: input[name=first_name].

19

Re: AHK: ошибка - "форма не заполнена"

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

20 (изменено: svoboden, Вчера 00:37:41)

Re: AHK: ошибка - "форма не заполнена"

Еще один способ нашел: http://bililite.com/blog/2015/01/14/ret … -sendkeys/. Там даже нажатия клавиш посылает. Но это плагин js.