Что нового

Работа с селекторами через условия If

DOMINANT

Новичок
Сообщения
42
Репутация
0
Добрый день! Учусь работать с условиями подскажите где ошибка? Идея такая чтобы посылать первый селектор если он отдает ошибку посылаем другой селектор в данном примере специально сделал ошибку в первом селекторе чтобы понять работу

Код:
#include <IE.au3>
$dir1 = (@UserProfileDir & '\AppData\Local\Microsoft\Windows\INetCache')
$dir2 = (@UserProfileDir & '\AppData\Local\Microsoft\Windows\INetCookies')

FileSetAttrib($dir1, "-RASHNOT", 1)
FileSetAttrib($dir2, "-RASHNOT", 1)

FileDelete($dir1) ;~ очистка кэша 
FileDelete($dir2) ;~ очистка куки

ProcessClose ("iexplore.exe") ; Закрытие существующего процесса если существует

$oIE = _IECreate("vk.com")
_IELoadWait($oIE)
WinSetState(WinGetTitle($oIE), '', @SW_MAXIMIZE)
$oIE.document.querySelector('#index_email2').value = '[email protected]' ; Здесь специально сделана ошибка добавлена цифра 2 в селекторе далее идет правильный селектор который должен сработать и заполнить поле логина
If @error Then $oIE.document.querySelector('#index_email').value =  '[email protected]' Next
$oIE.document.querySelector('#index_pass').value = 'password' ;~ Поле ввода пароля
Sleep(5000)
$oIE.document.querySelector('#index_login_button').click()
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
inververs сказал(а):

Убрал результат такой

Код:
"C:\Users\???????????\Documents\333.au3" (30) : ==> Variable must be of type "Object".:
$oIE.document.querySelector('#index_email2').value = '[email protected]'
$oIE.document.querySelector('#index_email2')^ ERROR
>Exit code: 1    Time: 2.99
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Ну эта ошибка не из-за того, что вы убрали next, а то по вашему сообщению складывается такое ощущение.

Вы можете делать так:
Код:
$oElement = $oIE.document.querySelector('#index_email2')
If Not IsObj($oElement) Then
	$oElement = $oIE.document.querySelector('#index_email')
EndIf
If Not IsObj($oElement) Then
	Exit MsgBox(0, 'Элемент не найден', 'Дальнейшее выполнение не возможно')
EndIf
$oElement.value = '[email protected]'
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
Да, ошибка не потому что убрал Next и до этого было такое. Я так понял по вашему примеру что нужно было селектор в переменную засунуть чтобы он стал объектом?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
DOMINANT [?]
Я так понял по вашему примеру что нужно было селектор в переменную засунуть чтобы он стал объектом?
Не обязательно он стал объектом, он мог бы стать пустой строкой. Поэтому я дальше проверяю IsObj которая говорит мне, является ли переменная объектом, если не является, то я беру другой селектор и т.д. И если же после всех попыток эта переменная не стала объектом я выхожу из скрипта и показываю ошибку.
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
А в каком случае переменная может быть пустой строкой? Если селектор отдаст ошибку будет пустой?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Да, или не найдет, то будет пустая строка или null, не помню точно
 
Верх