Что нового

[Сеть, интернет] Ожидание загрузки текстового поля

axlwor

Скриптер
Сообщения
657
Репутация
147
это я уже видел
можно попробовать еще варианты
Код:
$oForm = _IEFormGetObjByName($oIE, 'kufosignup')
	If @error = 0 Then
		$oLogin = _IEFormElementGetObjByName ($oForm, 'login')
		
		$oPassword = _IEFormElementGetObjByName ($oForm, 'pw')
		_IEFormElementSetValue ($oLogin, $username)
		_IEFormElementSetValue ($oPassword, $password)
		
		$oInputs = _IETagNameGetCollection($oFrame, 'INPUT')
		For $elem In $oInputs
		Next
 		_IEAction ($elem, "click")
		_IELoadWait ($oIE)

	ElseIf @error = 7 Then
		MsgBox(0,0, 'Не нашли форму' & @CRLF & 'Может быть она в другом фрейме')
	Else
		MsgBox(0,0, 'Вообще не понятно что творится!!!')
	EndIf
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
Код:
$oForm = _IEFormGetObjByName($oIE, 'kufosignup')
    If @error = 0 Then
        $oLogin = _IEFormElementGetObjByName ($oForm, 'login')
        $oPassword = _IEFormElementGetObjByName ($oForm, 'pw')

              ;vstavka iz ispravlenija/////////////////////////////
	_IEFormElementSetValue ($oLogin, $username)
              _IEFormElementSetValue ($oPassword, $password)
	$oInputs = _IETagNameGetCollection($oFrame, 'INPUT')
                   For $elem In $oInputs
                   Next
	;konec vstavki///////////////////////////////////////

          $oButton = _IEFormElementGetObjByName ($oForm, 'butLogin')
          ConsoleWrite('@error ' & @error & ' @extended ' & @extended & @CRLF)
           _IEFormElementSetValue ($oLogin, $username)
           _IEFormElementSetValue ($oPassword, $password)

        ;Надеюсь по этому батону форма отправляется
        _IEAction ($oButton, "click")
        _IELoadWait ($oIE)
    ElseIf @error = 7 Then
        MsgBox(0,0, 'Не нашли форму' & @CRLF & 'Может быть она в другом фрейме')
    Else
        MsgBox(0,0, 'Вообще не понятно что творится!!!')
    EndIf

Вот такой кусочек получился. Вот такая ошибка выходит:

--> IE.au3 V2.4-0 Error from function _IETagNameGetCollection, $_IEStatus_InvalidDataType
C:\Users\Dalida\Desktop\AutoIT\login ie.au3 (37) : ==> Variable must be of type "Object".:
For $elem In $oInputs
For $elem In $oInputs^ ERROR
->22:10:25 AutoIT3.exe ended.rc:1
>Exit code: 1 Time: 8.637


Код запускал и так и с заремленной $oButton и ConsoleWrite, предположив, что новые строки может быть надо запускать без этих. но ошибка таже самая, как в вверхнем абзаце. ИЕ стартует, заполняет, мышка остается там, где была в момент нажатия ctrl F12 и максимизировав ИЕ прога завершает работу.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
ошибочка вышла. но лучше я всю функцию запостю, а то и ты лишнее придумал

Код:
;Логинимся на сайт
Func _Login()
	If Not IsDeclared ("$oIE") Then
		_StartIE()
	EndIf

	If Not IsObj($oIE) Then
		_StartIE()
	EndIf

	$username = 'MyLogin'
	$password = 'MyPassword'
	
	$oForm = _IEFormGetObjByName($oIE, 'kufosignup')
	If @error = 0 Then
		$oLogin = _IEFormElementGetObjByName ($oForm, 'login')
		$oPassword = _IEFormElementGetObjByName ($oForm, 'pw')
		ConsoleWrite('@error ' & @error & ' @extended ' & @extended & @CRLF)
		_IEFormElementSetValue ($oLogin, $username)
		_IEFormElementSetValue ($oPassword, $password)
		
;~ 		$oButton = _IEFormElementGetObjByName ($oForm, 'butLogin')		
;~ 		;Надеюсь по этому батону форма отправляется
;~ 		_IEAction ($oButton, "click")
;~ 		_IELoadWait ($oIE)

		$oInputs = _IETagNameGetCollection($oForm, 'INPUT')
		For $elem In $oInputs
		Next
 		_IEAction ($elem, "click")
		_IELoadWait ($oIE)

	ElseIf @error = 7 Then
		MsgBox(0,0, 'Не нашли форму' & @CRLF & 'Может быть она в другом фрейме')
	Else
		MsgBox(0,0, 'Вообще не понятно что творится!!!')
	EndIf
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
axlwor,
А что делает эта конструкция?
Код:
;...
        $oInputs = _IETagNameGetCollection($oForm, 'INPUT')
        For $elem In $oInputs
        Next
        _IEAction ($elem, "click")
        _IELoadWait ($oIE)
;...
 

axlwor

Скриптер
Сообщения
657
Репутация
147
берет последний инпут. раз уж по имени инпут не хочет находиться, будем использовать самые монструозные вещи :D
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
axlwor [?]
берет последний инпут
Может попробовать так:
Код:
;...
$oInputs = _IETagNameGetCollection($oForm, 'INPUT')
$iLastInput = @extended - 1
$oLastInput = $oInputs($iLastInput)
_IEAction($oLastInput, 'click')
_IELoadWait($oIE)
;...
;...Или так:
$oInputs = _IETagNameGetCollection($oForm, 'INPUT')
For $elem In $oInputs
	If $elem.value == 'anmelden' Then
		_IEAction($elem, 'click')
		ExitLoop
	EndIf
Next
_IELoadWait($oIE)
;...
;...Или так:
_IEFormSubmit($oForm)
;...
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
[Автоматизация] Ожидание заполнения текстового поля

Здравствуйте, есть маска (Class: SunAwtCanvas - расковыриванию вроде не поддается, а может кто знает как?), куда в текстовые поля из буфера обмена вставляются данные через MouseClick, Sleep, Send("{CTRLDOWN}v{CTRLUP}"). Принципиально все работает, но иногда поле остается пустое, по каким-то там известным компу причинам. Я хочу написать проверку заполненности текстового поля. Вроде все просто, но результата нет. Кликаю на поле и посылаю ctrl+v, прога смотрит на поле, если черный буквенный цвет появился, то переход к следующему текстовому полю через mouseclick, если нет, то заснуть на секунду и опять отправить ctrl+v и так циклить, пока черный цвет не появится. Напишу пару строк, подправьте если можете пожалуйста:
Код:
MouseClick("left",656,186,1,5)
Do
    Sleep(100)
    PixelSearch(390, 186, 400, 186, 0x2D356B, 1); проверка цвета
    Sleep(50)
    Send("{CTRLDOWN}v{CTRLUP}")
Until @error=0 
MouseClick("left",764,186,1,5)

или:
Код:
While 1
    Sleep(100) 
    $aCoord = PixelSearch (373, 167, 390, 167, 0x465475)
    If @error=1 Then Send("{CTRLDOWN}v{CTRLUP}")
WEnd

или может еще как... замучился с экспериментами...
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Re: [Автоматизация] Ожидание заполнения текстового поля

Попробуй так:
Код:
MouseClick('left', 656, 186, 1, 5)
While 1
	Send(ClipGet())
	Sleep(100)
	PixelSearch(373, 167, 390, 167, 0x465475)
	If Not @error Then ExitLoop
	Sleep(1000)
WEnd

Если у меня не выходит определить имя элемента окна, то используя Send('{TAB}') тупо обхожу все элементы и встаю на нужное поле.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
Re: [Автоматизация] Ожидание заполнения текстового поля

Я не понял, а это что?
Объединил.
 
Верх