티스토리 뷰
10년 1월 기준.
webBrower.Navigate(url);
// url페이지로 이동
private void webBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e);
웹페이지 로딩 완료후 실행되는 함수.
웹문서내의 프레임수만큼 호출되기 때문에 다음과 같이 작업을 해야 한다.
private void webBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.AbsoluteUri == webBrowser1.Url.AbsoluteUri)
// if (this.webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
// 작업 실행
}
}
문서내의 태그 파싱
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// 문서가 정상적으로 로드 완료 되었을 경우만 실행
if (this.webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
// body 태그 이하 모든 요소들 추출
foreach (HtmlElement elements in this.webBrowser1.Document.Body.Children)
{
// 각 부모요소안의 모든 요소를 추출
foreach (HtmlElement element in elements.All)
{
// 특정 태그 목록 추출
switch (element.TagName)
{
case "IMG":
// 이미지 경로 출력
MessageBox.Show(element.GetAttribute("SRC"));
break;
case "A":
// 링크 경로 출력
MessageBox.Show(element.GetAttribute("HREF"));
break;
}
}
}
}
}
// 링크 값
foreach (HtmlElement el in webBrowser1.Document.Links)
{
string href = el.GetAttribute("href");
}
// 엘리멘트 파싱
HtmlElement el = webBrowser1.Document.All["id"];
string data = el.InnerText
// 엘리먼트 변경
HtmlElement el = webBrowser1.Document.All["id"];
el.SetAttribute("value", "1");
// 버튼 클릭
HtmlElement el = webBrowser1.Document.All["id"];
object obj = el.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);
// web submit실행
foreach (HtmlElement tt in webBrowser1.Document.All)
{
if (tt.TagName == "FORM")
{
textBox1.Text += tt.Id + Environment.NewLine;
if (tt.Id.ToUpper().IndexOf("LOGIN") >= 0)
{
tt.All.GetElementsByName("id")[0].SetAttribute("value", "바보");
tt.All.GetElementsByName("pw")[0].SetAttribute("value", "123");
tt.All.GetElementsByName("enpw")[0].SetAttribute("value", "123");
tt.InvokeMember("submit");
break;
}
}
}
'Knowledge' 카테고리의 다른 글
Linux(리눅스) Mail(메일) 관련 (0) | 2024.01.14 |
---|---|
JSP(제이에스피) DB(디비) Connect(접속) (0) | 2024.01.07 |
BlazeDS(블레이즈디에스) LCDS(LiveCycle Data Services) 비교 (0) | 2024.01.07 |
Symfony(심포니) Framework(프레임워크) 관련 (0) | 2024.01.07 |
mysql(마이에스큐엘) remote access(외부접속) 허용 (0) | 2024.01.07 |