반응형

givemethesocks.tistory.com/3

 

[C#] 만들려는 것

그냥 무턱대고 하다보면 뭘 하려던건지 까먹는 경우가 많아서... 그때그때 떠오르는 할 것 간단하게 정리. 0. 난 C# 초보니까 바닥부터 하나하나 해본다. 1. 버튼 클릭 이벤트 2. C#으로 웹 브라우저

givemethesocks.tistory.com

웹 페이지 로그인 하는 방법

 

간략하게,

1. 웹페이지 띄우기 (해당 주소로 이동)

2. 아이디/비밀번호 입력

3. 로그인 시도

 

--

0. HTML 컨트롤 도구 먼저 추가한다.

앞서와 마찬가지로 (givemethesocks.tistory.com/5) 참조추가 -> Microsoft HTML Object Library

이후 documentation 보면서 더듬더듬 해본다. (구글 검색으로 블로그를 찾아보면 너무 예전 것들이랑 지금이랑 다른게 많다. 되긴 할거다.)

ihtmlelement document

docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa752279(v=vs.85)

.net framework document

docs.microsoft.com/ko-kr/dotnet/api/system.windows.forms.htmldocument?view=netframework-4.7.2

 

1. 웹페이지 띄우기

이건 이전 글에서 했으니 패스 

 

2. 아이디/비밀번호 입력

            //login form 획득
            IHTMLElement elem = elems.item("frmLogin", 0);
            //ID/비번 입력
            IHTMLElement boxID = elem.getAttribute("nameID", 0);
            boxID.setAttribute("value", "myID");
            IHTMLElement boxPW = elem.getAttribute("namePW", 0);
            boxPW.setAttribute("value", "myPW");

 

3. form submit

여기에서 삽질이 좀 길었는데,

처음엔 자바스크립트로 로그인 버튼 클릭 시 호출되는 'checklogin()' 이벤트 자체를 호출하려고 했다. --> 왠지모르게 실패함. 아마 공식 자바스크립트 함수가 아니라 사이트에서 정의한 함수라 안되는거같다.

            /*
            //실패함
            mshtml.IHTMLDocument2 document2 = (IHTMLDocument2)webBrowser.Document;
            document2.parentWindow.execScript("checklogin()");
            */

두번째엔 C#에서 지원하는 invokemember (클래스에서 정의된 함수 호출)로 하려고 했고 성공했는데, 이게 이전에 winform에서 사용하던 HTMLElement와 현재 WPF에서 사용하는 IHTMLElement에서의 함수가 조금 다르더라. document에 잘(?) 정리되어 있다.

이 한줄 쓰느라 두시간걸림...ㅠ

elem.GetType().InvokeMember("submit", System.Reflection.BindingFlags.InvokeMethod, null, elem, null); //wpf 거지같다.

 

 

 

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기