2013-08-05 3 views
0

У меня этот скрипт Autoit работает хорошо, но как я могу заставить его повторить задание, не повторяя написание скрипта для каждого значения?Повторите задание без повторения ввода сценария для каждого значения

Значение1 = usernameA работа с passwordA

Value2 = usernameB работы с passwordB

Value3 = usernameC работы с passwordB

#include <IE.au3> 
$oIE = _IECreate ("www.site.com/login") 

$username = _IEGetObjByName ($oIE, "q_username") 
$id = _IEGetObjByName ($oIE, "q_username") 
$password = _IEGetObjByName ($oIE, "q_password") 
$id = _IEGetObjByName ($oIE, "q_password") 
$button1 = _IEGetObjByName ($oIE, "login") 

_IEPropertySet($username, 'innerText', 'usernameA') 
_IEPropertySet($id, 'innerText', 'usernameA') 
_IEPropertySet($Password, 'innerText', 'passwordA') 
_IEPropertySet($id, 'innerText', 'passwordA') 
_IEAction ($button1,"click") 

Я не хочу, чтобы это было так!

#include <IE.au3> 

$oIE = _IECreate ("www.site.com/login") 
$username = _IEGetObjByName ($oIE, "q_username") 
$id = _IEGetObjByName ($oIE, "q_username") 
$password = _IEGetObjByName ($oIE, "q_password") 
$id = _IEGetObjByName ($oIE, "q_password") 
$button1 = _IEGetObjByName ($oIE, "login") 

_IEPropertySet($username, 'innerText', 'usernamea') 
_IEPropertySet($id, 'innerText', 'usernameA') 
_IEPropertySet($Password, 'innerText', 'passworA') 
_IEPropertySet($id, 'innerText', 'passwordA') 
_IEAction ($button1,"click") 

$oIE = _IECreate ("www.site.com/login") 
$username = _IEGetObjByName ($oIE, "q_username") 
$id = _IEGetObjByName ($oIE, "q_username") 
$password = _IEGetObjByName ($oIE, "q_password") 
$id = _IEGetObjByName ($oIE, "q_password") 
$button1 = _IEGetObjByName ($oIE, "login") 

_IEPropertySet($username, 'innerText', 'usernameB') 
_IEPropertySet($id, 'innerText', 'usernameB') 
_IEPropertySet($Password, 'innerText', 'passwordB') 
_IEPropertySet($id, 'innerText', 'passwordB') 
_IEAction ($button1,"click") 

$oIE = _IECreate ("www.site.com/login") 
$username = _IEGetObjByName ($oIE, "q_username") 
$id = _IEGetObjByName ($oIE, "j_username") 
$password = _IEGetObjByName ($oIE, "q_password") 
$id = _IEGetObjByName ($oIE, "q_password") 
$button1 = _IEGetObjByName ($oIE, "login") 

_IEPropertySet($username, 'innerText', 'usernameC') 
_IEPropertySet($id, 'innerText', 'usernameC') 
_IEPropertySet($Password, 'innerText', 'passwordC') 
_IEPropertySet($id, 'innerText', 'passwordC') 
_IEAction ($button1,"click") 

Также как вернуть его в первую строку по сценарию, когда он заканчивается?

+0

Вам не нужно '#include ' несколько раз. – Samoth

ответ

0

Используйте функции:

#include <IE.au3> 

Func TestPassword($user, $pass) 
    $oIE = _IECreate ("www.site.com/login") 

    $username = _IEGetObjByName ($oIE, "q_username") 
    $id = _IEGetObjByName ($oIE, "q_username") 
    $password = _IEGetObjByName ($oIE, "q_password") 
    $id = _IEGetObjByName ($oIE, "q_password") 
    $button1 = _IEGetObjByName ($oIE, "login") 

    _IEPropertySet($username, 'innerText', $user) 
    _IEPropertySet($id, 'innerText', $user) 
    _IEPropertySet($Password, 'innerText', $pass) 
    _IEPropertySet($id, 'innerText', $pass) 

    _IEAction ($button1,"click") 
EndFunc 


TestPassword('usernameA', 'passwordA'); 
TestPassword('usernameB', 'passwordB'); 
TestPassword('usernameC', 'passwordC'); 

Вы можете даже сделать массив и итерацию через него с For...In...:

$credentials[0]['user'] = 'usernameA'; 
$credentials[0]['pass'] = 'passwordA'; 
$credentials[1]['user'] = 'usernameB'; 
$credentials[1]['pass'] = 'passwordB'; 

For $cred In $credentials 
    TestPassword($cred['user'], $cred['pass']); 
Next 
Смежные вопросы