![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не получается программно авторизоваться на сайте
И. Павел © (2011-01-17 11:26:00)Здравствуйте.
Моя программа должна открывать в браузере страницу авторизации к сайту (Service Desk - сайт выполняется у нас на сервере): вводить логин и пароль и нажимать на кнопку входа. Раньше все работало. Но теперь изменилась версия Service Desk, а вместе с ним, видимо, и страница авторизации. Вышел из отпуска, и код уже не работает :) Логин и пароль вводится (появляются в окне браузера и возвращаются через getAttribute), но авторизация не проходит: сайт сообщает, что пользователя с такими данными нет. Если ввести логин и пароль вручную, то все работает.
Пытался после ввода логина самостоятельно вызывать JavaScript функцию, записанную в OnChange поля логина. Не помогло.
Подскажите, пожалуйста, с чем может быть связано такое разное поведение при автоматической и ручной авторизации?
Заранее спасибо.
PS: Вот код функции, выполняющей авторизацию:
procedure TMainF.HDAuth(login, password: string);
var IE: IWebBrowser2;
doc: IHtmlDocument2;
i: integer;
temp, value: OleVariant;
begin
temp := null;
IE := CreateOleObject('internetexplorer.application') as IWebBrowser2;
IE.visible := true;
IE.navigate('hd', temp, temp, temp, temp);
while IE.Busy do
Sleep(200);
while IE.ReadyState <> READYSTATE_COMPLETE do
Sleep(200);
doc := IE.Document as IHtmlDocument2;
if doc.title = 'ManageEngine ServiceDesk Plus' then
begin
if HaveHTMLEl('INPUT', 'j_username', doc) and
HaveHTMLEl('INPUT', 'j_password', doc) and
HaveHTMLEl('INPUT', 'loginButton', doc)
then
begin
GetHTMLEl('INPUT', 'j_username', doc).setAttribute('value', login, 1);
GetHTMLEl('INPUT', 'j_password', doc).setAttribute('value', password, 1);
GetHTMLEl('INPUT', 'loginButton', doc).click;
…
Вот HTML код страницы авторизации: http://paste.org/pastebin/view/27413
Вот код функций HaveHTMLEl и GetHTMLEl, хотя вряд ли дело в них: http://paste.org/pastebin/view/27412
И. Павел (2011-01-17 12:09:00) [1]Все, разобрался.
Все-таки дело выбо именно в том, что не отрабатывал onChange плюс сервер нестабильно работал, из за чего я сразу не заметил, что ошибка исчезла!