본문 바로가기

Delphi/꿀팁

WebBrowser로 자동로그인 만들기 - 1

1. 폼에 WebBrowser와 Button을 하나 올려놓고 SHDocVw와 MSHTML을 추가합니다.

uses

SHDocVw, MSHTML;

TForm1 = class(TForm)     WebBrowser1: TWebBrowser;     Button1: TButton;     procedure Button1Click(Sender: TObject);     procedure WebBrowser1DocumentComplete(ASender: TObject;         const pDisp: IDispatch; const URL: OleVariant);

private     { Private declarations } public     { Public declarations } end;

2. 버튼 클릭 이벤트에서 예제로 사용할 네이버 로그인 페이지를 불러옵니다.

procedure TForm1.Button1Click(Sender: TObject); begin     WebBrowser1.Navigate('https://nid.naver.com/nidlogin.login'); end;

3. WebBrowser의 DocumentComplete이벤트에서 자동입력 부분을 구현합니다.

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;     const pDisp: IDispatch; const URL: OleVariant); var     doc3 : IHTMLDocument3;     eleColl : IHTMLElementCollection;     I: Integer; begin

//웹페이지의 로딩완료 이벤트에서 작업을 진행합니다.


    doc3 := (pDisp as IWebBrowser2).Document as IHTMLDocument3;

//Element를 찾기위해 Document를 IHTMLDocument3에 맞춰 가져옵니다. -> MSDN 참조

    doc3.getElementById('id').setAttribute('value', 'testID', 0 );     doc3.getElementById('pw').setAttribute('value', 'testPw', 0 );

//가져온 Document에서 아이디, 비밀번호 입력창의 위치를 id로 찾아와 값을 넣어줍니다.

    eleColl := doc3.getElementsByTagName('input');

//네이버는 로그인 버튼의 id값이 존재하지 않으므로 TagName으로 찾아줍니다.


    for I := 0 to eleColl.length - 1 do     begin         if (eleColl.item(I, 0) as IHTMLInputElement).type_ = 'submit' then             (eleColl.item(I, 0) as IHTMLInputElement).form.submit;     end;

//Collection에서 로그인 버튼에 해당하는 Element를 찾아와 Submit을 실행시켜줍니다.

end;


반응형