Что нового

[Сеть, интернет] автоматическое заполнение формы через Fire Fox

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Облазил форум и справку так и не магу понять как заполнить два поля на сайте ??? функции ControlFocus() и ControlSend() как я понимаю используются только с управляющими элементами окон. а мне нужно установить фокус на странице в поле, и затем послать туда автоматом слово подскажите нубу какие функции использовать, если все это происходит в Fire Fox.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Если вам очень-очень принципиален FireFox, то необходимо использовать FireFox UDF. Поиск рулит!
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
qsort
мне почему то кажется что самопальный интерфейс ФФ куда более скуден, нежели COM от IE. но вопрос в другом, зачем в процессах автоматизации заботиться о средствах этой самой автоматизации.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
qsort
я не про то, просто когда дело касается автоматизации, то как правило стоит задача, которые необходимо сделать без присутствия человека - автоматизировать. если это касаемо интернет страниц, то нужно к примеру где-то залогиниться, что-то понажимать и тд. но при этом все эти действия делает машина, а не человек. так вот, разве у машины есть вкусы? помоему нет. зато у человека управляющего этой машиной есть задача, есть сроки, есть определенные требования. некоторые из которых - время выполнения, надежность и богатство арсенала. так вот, именно в этом плане автоматизации IE выгоднее. потому что дядя билл предоставил очень богатые возможности для этого приноровив COM
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Ух ты ж какая дискуссия, обожаю когда знающии люди спорят ( в хорошем смысле этого слова) по предмету который они хорошо знают :laugh: потому что обычно затрагивается куча тем и как в следствии получаеш массу полезной информации для новичка :ok: дело в том что как упомянул
qsort
На самом деле, я так понял, FF.au3 уже есть, и соответствующие функции там тоже есть.
это все есть и задача минимум уже выполнена скрипт мой работает на ура благодаря конечно же qsort за что огромное ему спасибо. Просто как я понял возможности autoiT настолько велики что хочется узнать боль что б можно было все это применять на практике, и радоваться когда поставлена задача выполняется со 100% КПД
qsort
Как правило, страница любого, мало-мальски посещаемого сайта подстраивается "под себя".......Зачем тогда, вообще, компьютер?
полностью согласен с вами.

Kaster
этом плане автоматизации IE выгоднее. потому что дядя билл предоставил очень богатые возможности для этого приноровив COM
просто так получилось исторически что не всегда пользовался ИЕ особенно ранними версиями патом это вошло в привычку и как следствие не понимание реальных возможностей все того же ИЕ. в данной ситуации хочу и буду рассматривать все доступные способы для облегчения собственного бытия ;) самое главное чтоб люди встречались по большей мере мере хороши и душевные. а то интернет сейчас стал какой то злой колючий. люди в большинстве случаев ,особенно те которые понимают в чем то собираются как правило в закрытые общества и получить от них какую то инфу нубу крайне тяжело.
а вот ваше сообщество скорей исключение из правил. сужу по себе пришел спросил, ответили привели пример, еще и попутно дали кучу информации за что вам огромное спасибо)) :IL_AutoIt_1:

А теперь по теме ...
дело в том что та задача которая была поставлена уже решена и выполняется на ура , но нет приделу совершенству, тем более когда есть возможность для собственной пользы что то приобрести новое и полезное, так вот при выполнении скрипта все равно приходится присутствовать потому что на странице присутствует замороченная капча. мб поэтому и в следствии привычки к ФФ использую все тот же ФФ, а сам скрипт в разных конфигурациях с разными переменными приходится юзать неприлично много за день вот и хочется довести этот скрипт до совершенства.
qsort
Просто их описание нужно смотреть не в русской справке, которая устарела, а именно в файле FF.au3.
вот и я о том же :rofl: я как порядочный... перелопатил всю справку ссылку на которую вы мне дали и из описаний функций не нашел для себя под ходящей, а в FF.au3 не заглянул ибо даже и не подозревал что там может быть подробное описание всех функций пусть и на инглеше, пусть и не дружу с инглешом но все же понять что то для себя можно спасибо еще раз вам за помощь :ok:

Вопрос вот в чем иногда в большинстве случаев скрипт приходится выполнять на нет буке и в полевых условиях. чтобы найти первое поле для ввода капчи приходится тыкать по мауспаду ибо в силу особенностей этого девайса страница вся не влазит на экран ну а при установки на это поле курсора ТАВом страничка поднимается вот поэтому мне и понадобился фокус на поле в которое нечего вводить не надо автоматом. а вот поставить туда курсор надо. поле имеет во такой вид
Код:
<input type="text" maxlength="14" class="num2" value="" name="5dbf801a">
и при этом name="5dbf801a" постоянно меняется в этом случае поработать с этим полем не получится??вообще весь блок имеет вот такой вид
Код:
< br>
<input type="hidden" value="1" name="voteStep">
<input type="text" maxlength="14" class="num2" value="" name="5dbf801a">
</td >
или нужно искать name="voteStep" тогда у меня все равно не получается или делаю как обычно что то не так :(

ну поле куда вводить имя
Код:
<input type="text" maxlength="20" class="num2" value="" name="name">
подскажите как поступить в данной ситуации??
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
qsort
воспользовался вашим советом и нашел в FF.au3 полезную функцию
Код:
_FFAction ("ScrollXY",0,100)
так решил вопрос со скролом страници ну и уже патом
Код:
MouseClick("left",157,444,1)
в общем установил курсор там где надо )
осталось решить как реализовать такую функцию у меня на компе скажем 4 пользователя user2 user1, user3, user4
и есть такая функция
Код:
Func _Spam() ; функция спама
	Send("{TAB 2}")
		Sleep(100)
    Send( "Sid0r")  ; Ник
		Sleep(100)
		_FFImageClick("/images/vote2.gif")
		 Sleep(1000)
EndFunc


эта функция после нажатия на интер вводит ник в поле т.е. для каждого пользователя свой скрипт со своим ником я бы хотел реализовать это все в одном скрипте ведь есть такая переменная как @UserName яб хотел чтоб в зависимости от пользователя функция _Spam() вставляла ник принадлежащей этому пользователю, и в силу своего незнания языка не магу сообразить как реализовать эту функцию???

еще в ходе исполнения скрипта столкнулся с такой проблемой иногда сервер бывает перегружен соответственно выдает страничку о перегрузке я решил сделать проверку текста на странице и в случае обнаружения его то релоад страницы но скрипт не находит слова на странице подскажите где я не так сделал
Код:
#Include <FF.au3>
Global $sSearchString="перегрузка"
While 1
If $sSearchString ==_FFSearch($sSearchString) Then
		MsgBox(0,"нашел", $sSearchString)
	Else
		_FFAction ("reload")
	EndIf
WEnd


и еще

Код:
_FFSetValue( "Иван Иваныч Иванов", "name_input", "id")
в моем случае не делает не чево мб я опять что то не так делаю поправте меня пожалуйсто у меня поле ввода выглядит во так
Код:
<input type="text" maxlength="20" class="num2" value="" name="name">
надеюсь на вашу помощь в очередной раз
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
qsort
блин только заметил просто на нет буке мониторчик маленький и верх станицы уходит, а в шапке в самом верху еще одно поле с таким именем он туда и пихает "ивана ивановича" я тоже так делал как вы предложили но не видел что он пихает туда, а в мое не хочет поставил в конце индекс 1 и он стал попадать в мое поле :laugh:
если юзеров больше, лучше использовать Select-Case
да их намного больше и постоянно растут щас 48 планируется 150

Не видя страницы нереально понять, как же, все-таки, происходит этот самый "релоад"
я думал что это особенности сайта но даже на yandex.ru также не находит слово "Дизайн" в левом нижнем углу станицы, а релоад сам проходит нормально страница визуально обновляется полностью и скрипт ждет когда страница загрузится полностью только патом релоад. да и без релоада не ищет слов на сайтах даже не знаю почему.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
qsort
Если все так здорово, что имя юзера совпадает с ником, то в функции _Spam() можно просто указать Send(@UserName)
решил облегчить себе жизнь и переименовать всех пользователей думаю так будет проще.
поиск какого-то слова осуществлять для определения положения вещей - способ не самый простой,
жаль что функция поиска не работает , она не работает на всех сайтах которые о пробовал, такое может быть? ??? а я хотел сделать проверки основываясь на содержании страницы.

Код:
if @UserName == "user1" Then
    $UserName = "user2"
ElseIf @UserName == "user2" Then   
    $UserName = "user3"
ElseIf @UserName == "user3" Then   
    $UserName = "user4"   
EndIf

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

Код:
$UserName = "user"
$UserPasswords = ""

; Вносим изменения в реестр

RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon", "REG_SZ", "1")
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "ForceAutoLogon", "REG_SZ", "1")
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName", "REG_SZ",  $UserName)
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword", "REG_SZ", $UserPasswords )


; Выходим из текущего пользователя и заходим в необходимого
_RunDOS("shutdown -f")

но пока у меня не получается сделать выход из одного пользователя и вход другим
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
qsort
Какое проще? Зачем переименовывать?! Для чего этот If-Then-то, нужен?
Ну я подумал чтоб не делать в скрипте 2-е проверки юзера и подстановку ника сделал сразу пользователя с нужным ником и забыл раз и навсегда о том что надо вносить в скрипт изменения.
Зачем там какие-то мутные записи в реестр? Убей бог, не пойму!
как бы это объяснить... просто нужно чтоб сразу же после выполнения скрипта в систему автоматом без ввода пароля и логина вошел другой юзер, вот эти изменения в реестре и есть не что иное как назначение autologon юзера. после этих изменений в систему автоматом войдет только тот юзер который прописан в реестре.
вот тут как раз и нужна проверка какой текущий юзер и каму следующим заходить. вот и пытаюсь эту проверку прикрутить к скрипту.
Это какая функция у вас не работает? Не _FFSearch(), часом? Как вы смогли такого добиться?!
она самая. на моей странице возвращает 0 , на странице нашего форума находит 1 и то в самом конце в последнем посте делаю это так
Код:
#Include <FF.au3>
_FFStart()
_FFConnect()
_FFOpenURL("http://autoit-script.ru/index.php?topic=3763.msg27318#msg27318")
MsgBox(0, "", _FFSearch("general66"))
в консоли творится вот это
>"D:\Program Files\Programm\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\Program Files\Programm\AutoIt3\Examples\l2\search.au3"
__FFStartProcess: ""D:\Program Files\Programm\Mozilla Firefox\firefox.exe" -new-window "about:blank" -repl 4242
_FFConnect: OS: WIN_XP WIN32_NT 2600 Service Pack 3
_FFConnect: AutoIt: 3.3.6.1
_FFConnect: FF.au3: 0.6.0.0b-5
_FFConnect: IP: 127.0.0.1
_FFConnect: Port: 4242
_FFConnect: Delay: 2ms
_FFConnect: Socket: 1648
__FFSend: try{window.content.top.document.browserDOMWindow}catch(e){'_FFCmd_Err';};
__FFRecv:
__FFSend: try{navigator.userAgent}catch(e){'_FFCmd_Err';};
__FFRecv: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)
_FFConnect: Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)
__FFSendJavaScripts: Sending functions to FireFox .......... done
_FFLoadWait: . loaded in 31ms
_FFConnect: OS: WIN_XP WIN32_NT 2600 Service Pack 3
_FFConnect: AutoIt: 3.3.6.1
_FFConnect: FF.au3: 0.6.0.0b-5
_FFConnect: IP: 127.0.0.1
_FFConnect: Port: 4242
_FFConnect: Delay: 2ms
_FFConnect: Socket: 1636
__FFSend: try{window.content.top.document.browserDOMWindow}catch(e){'_FFCmd_Err';};
__FFRecv:
__FFSend: try{navigator.userAgent}catch(e){'_FFCmd_Err';};
__FFRecv: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)
_FFConnect: Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)
__FFSendJavaScripts: Sending functions to FireFox .......... done
_FFOpenURL: http://autoit-script.ru/index.php?topic=3763.msg27318#msg27318
__FFSend: try{window.content.top.document.location.href='http://autoit-script.ru/index.php?topic=3763.msg27318#msg27318';}catch(e){'_FFCmd_Err';};
__FFRecv: http://autoit-script.ru/index.php?topic=3763.msg27318#msg27318
_FFLoadWait: ..................... loaded in 6948ms
__FFSend: try{content.find("general66", false, false, true, false, true, false);}catch(e){'_FFCmd_Err';};
__FFRecv: 1
>Exit code: 0 Time: 19.287
вот мб при поиске еще чтото надо указывать в каком блокеи искать или еще че нить там параметров куча
Код:
_FFSearch($sSearchString[, $bCaseSensitive = false[, $bBackwards = false[, $bWrapAround = true[, $bWholeWord = false[, $bSearchInFrames = true]]]]])
половину из них я не понимать :-[
баюсь даже думать о том что достал вас своим нубством
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
qsort
На самом деле, в скрипте делается только одна проверка в If-Then, где там еще?!

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

на странице этого форума "general66", такая строка имеется, а на "моей" странице такой строки нет
в том то и дело что на форуме я искал general66 а на моей странице свое слово.
Весь исходник скиньте, который у вас работает, может, просто о разных вещах говорим
в принципе тут не работает только одна функция в начале скрипта вот она с ссылкой на требуемую страницу
Код:
#include<Misc.au3>
#Include <FF.au3>
#include <process.au3>
Global $CONNECTNAME="Utel"
Global $sSearchString="Голосовать"
; Подключиться
 ShellExecute(@SystemDir&"\RASdial.EXE",""&$CONNECTNAME)
 Sleep(3000)
 _FFStart()
 _FFConnect()
 _FFOpenURL("-")
; проверка страницы на пригодность если нет слова перегрузка
;While 1
	If $sSearchString ==_FFSearch($sSearchString) Then
	Else 
		_FFAction ("reload")
	EndIf
;WEnd
Exit
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Цитата
Единственная причина, по которой функция может не найти строку - файл создан не в юникоде.
о боги! там там кирилица 1251 и все что изменяется там, изменяется только пару слов на русском неужели нет выхода ??? :'( пытался менять кодировку файла скрипта все безрезультатно :'( :'(
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
madmasles
А если использовать _FFReadText(), то как русский текст возвращает?
возвращает 0 а в консоли кракозяблы и вся страница перевернутая(
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
один из последних вопросов как правильно составить поиск на странице с помощью функций _FFSearch и _FFAction ("reload")
я это реализовал так если можно поправьте если я сделал ошибку гдето или можно это сделать по другому или правильней.
Код:
If _FFIsConnected() Then
	$sStringToSearch = "Aria1"
While 1
	If _FFSearch($sStringToSearch) Then
		ExitLoop
	Else
		_FFAction ("reload")
	EndIf
WEnd

	Sleep(3000)
	_FFWindowClose()
EndIf

и еще вопрос как сделать возврат , чтоб скрипт начал выполнять функцию заново скажем после Else происходил возврат к определенной функции скрипта которая была пройдена раньше.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3

_FFCmd(".location.reload(true)"), работать будет чуть побыстрее
интересный момент спасибо за интересный примерчик, если я правилно понял то - _FFCmd это что то типа функции командной строки для фф ???

Нет такого слова "возврат к функции"! К функции нельзя вернуться, ее можно только вызвать (по имени, как и людей).
если я правильно понял то после Else надо прописать Call () и произойдет вызов той функцыи которая была объявлена и произойдет выполнение этой функции, после скрипт продолжит свое выполнение с момента вызова этой функции. а мне надо чтоб после Else происходил возврат к определенному месту в скрипте и скрипт продолжил свое выполнение с этого места и до конца вот. просто не знаю как это правильно сделать и какие команды применить из тех что нашел ожидаемого результата не получил.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
qsort
Неправильна сама структура программы, если появляется желание вернуться на какой-то кусок кода, который уже давно исполнен.
да нет , дело все в том что из за того что поиск по русским словам не происходит мне пришлось сделать проверку по наличию английских символов одна проверка проходит нормально потому что ,когда сервер перегружен на выводимой странице отсутствует слово Aria, после reload оно появляется на странице куда вводить капчу и скрипт продолжает свои действия, но при неправильном вводе капчи страница не изменяется за исключением сообщения на русском, но при этом в поле куда вводился ник этот ник там и остается при любых обстоятельствах даже если перегрузить страницу, вот я и сделал проверку правильности ввода капчи , если капча введена правильно то то дальше скрипт мониторит _FFCmd(".location.href") когда она изменится а и при нахождении правильного url скрипт завершается, а при неправильном вводе капчи надо перезапустить скрипт с момента начала функции _Spam () ведь она уже отработала до того как происходит проверка на правильность ввода капчи.
Там иногда бывает глюк как бы правильно ты капчу не вводил она не принимается надо сделать reload и тогда все становится на свои места, ну иногда машинально не правильно сам вводишь капчу. Вот, а ввиду того что пользуюсь нет буком вся полезная информация не попадает в поле зрения из за структуры сайта и огромной шапки. вот и хочется чтоб все происходило автоматом. если что то сделал не так, то предлагается автоматом повторить ввод капчи со всеми там проверками :smile: поэтому и появилась потребность к возврату-повтору.
Значит мне нужно сделать разветвление скрипта так я понимаю. и если капча введена правильно то скрипт закончится одним способом, в "противном" случаи после проверки я дописываю основную часть скрипта после проверки и он заканчивается уже по этой ветки. так ведь??? но если ещераз неправельно ввиду то нужно сделать еще одну ветку :wacko:
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
не когда не занимался программированием может поэтому так много времени потребовалось на то чтоб понять что тут любую последовательность действий можно представить в виде цыклов While-WEnd и сам весь скрипт полностью может быть циклом главное четко определить при каких условиях совершать выход из них. Фух и для новичка сложновато все моменты учесть и не потеряться :wacko:. Спасибо еще раз помощь в освоении языка.

Интересно а люди со статусом Гуру как решают проблему поиска не уникод символов ???

и еще маленький вопросик я делаю logof такой командой
Код:
_RunDOS("shutdown -f")

но она не рубит долго думающие окна (иногда какаето хрень в винде тормозит ) не всегда но пару тройку раз выскакивает окно подождать или завершить. так вот я в справке нашел это

Код:
Shutdown()

там описание " код 9 (shutdown + power down = 1 + 8 = 9)." а если мне надо 0+4 это logof+force как будет выглядеть код?
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Дык, надо полагать, так и будет: Shutdown(4)
Блин ну да чего то я совсем уже перегрелся просто 0+4 как то на первый взгляд неприглядное выражение, хотя сомо по себе 4 и есть логоф с форсом ибо других комбинаций для форса нет)) да и на компе запущенно сейчас столько что жалко рестарт делать чтоб проверить, вот и спросил не подумавши, нет чтоб мозгами пошивелить)))
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
qsort
:laugh: ура проверил новый скриптик со всеми проверками, теперь все чем нужно заниматься за компом во время его выполнения это нажать 9 кнопочек и интер :D отказался от переименования пользователей воспользовался вашим советом и сделал проверочку
Код:
If --Then
    $SpamName = ""
ElseIf -- Then
все работает.
мысли в слух
теперь для полного счастья найти инфу про cookies в частности как сайты их пихают и как вносят в них изменения но это уже другая история.
ну а распознавание капчи это вообще наверное мечты из разряда фантастики.
 
Верх