Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не получается программно авторизоваться на сайте


И. Павел ©   (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 плюс сервер нестабильно работал, из за чего я сразу не заметил, что ошибка исчезла!


Наверх

Титульная страница Поиск, карта сайта Написать письмо