2017-10-27 3 views
1

...webBrowser_DocumentCompleted는 아무 이유없이 4 번 호출 (내가 찾을 수) 내가 아이디어 나갈거야

안녕 얘들 아, 나는 C#에서 대한 지식을 조금 가지고와 HTML 문서/요소와 뭔가 이상한 DocumentCompleted를 사용하는 동안 발생합니다. 여기에 DocumentCompleted 코드와 PostGame는()의 코드 : 그래서 문제가 DocumentCompleted/PostGame() 함수가 4 번 호출 할 필요가 있다는 것입니다

</head><body background="https://i39.servimg.com/u/f39/17/72/44/45/backgr10.jpg" bgcolor="#ffffff" text="#000000" link="#000000" vlink="#000000"><a name="top"></a><table class="bodylinewidth" width="80%" cellspacing="0" cellpadding="10" border="0" align="center"><tr><td class="bodyline"><table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td align="center" width="100%" valign="middle"><a href="/"><img src="https://i58.servimg.com/u/f58/17/72/44/45/ovechk14.jpg" id="i_logo" border="0" alt="Crazy Hockey League" vspace="1" /></a><br /><div class="maintitle">Crazy Hockey League</div><br /><span class="gen">CHL Franchise™.<br />&nbsp; </span></td></tr></table><table cellspacing="0" cellpadding="0" border="0" align="center"><tr><td align="center"><a class="mainmenu" href="/"><img id="i_icon_mini_index" src="https://i38.servimg.com/u/f38/17/18/20/77/home15.png" border="0" hspace="0" alt="Accueil" title="Accueil" /></a><a class="mainmenu" href="/calendar"><img id="i_icon_mini_calendar" src="https://illiweb.com/fa/empty.gif" border="0" hspace="0" alt="Calendrier" title="Calendrier" /></a><a class="mainmenu" href="/faq"><img id="i_icon_mini_faq" src="https://illiweb.com/fa/empty.gif" border="0" hspace="0" alt="FAQ" title="FAQ" /></a><a class="mainmenu" href="/memberlist"><img id="i_icon_mini_members" src="https://i38.servimg.com/u/f38/17/18/20/77/membre12.png" border="0" hspace="0" alt="Membres" title="Membres" /></a><a class="mainmenu" href="/groups"><img id="i_icon_mini_groups" src="https://i38.servimg.com/u/f38/17/18/20/77/groupe11.png" border="0" hspace="0" alt="Groupes" title="Groupes" /></a><a class="mainmenu" href="/profile?mode=editprofile"><img id="i_icon_mini_profile" src="https://i38.servimg.com/u/f38/17/18/20/77/profil11.png" border="0" hspace="0" alt="Profil" title="Profil" /></a><a class="mainmenu" href="/privmsg?folder=inbox" rel="nofollow"><img id="i_icon_mini_message" src="https://i38.servimg.com/u/f38/17/18/20/77/mp11.png" border="0" hspace="0" alt="Messagerie" title="Messagerie" /></a><a class="mainmenu" href="/login?logout=1&amp;tid=0162d102f01a1c63d64d8d517645b5ae&amp;key=7a24f2" rel="nofollow" id="logout" ><img id="i_icon_mini_logout" src="https://i38.servimg.com/u/f38/17/18/20/77/off11.png" border="0" hspace="0" alt="Déconnexion [ Ogie ]" title="Déconnexion [ Ogie ]" /></a></td></tr></table><div style="clear: both;"></div><div id="page-body"><div id="emptyidcc" class="no-left"><table cellpadding="0" cellspacing="0" width="100%" class="three-col"><tbody><tr><td valign="top" width="0"><div id="emptyidleft"></div></td><td valign="top" width="100%"><div class='n99fdc1'><script src="https://partner.googleadservices.com/gampad/google_service.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ 
    GS_googleAddAdSenseService("ca-pub-0339214227387817"); GS_googleEnableAllServices();//]]> 
</script><script type="text/javascript">//<![CDATA[ 
    GA_googleAddAttr("Ad_type", "text"); GA_googleAddAttr("User_type", "Regular_user");GA_googleAddAttr("Page_type", "Other_page");GA_googleAddAttr("Site_type", "Premium");GA_googleAddAttr("Gender", "Male");GA_googleAddAttr("AgeRange", "18-24");//]]> 
</script><script type="text/javascript">//<![CDATA[ 
    google_ad_slot="1505882794"; google_ad_channel="2442858061+9170118551+4515235772+8811049474+2562183790+8771478709+2207379944+8003782320"; google_ad_type="text"; google_color_border="ffffff"; google_color_link="000000"; google_color_bg="ffffff"; google_color_text="000000"; google_color_url="ffffff"; google_ui_features="rc:6"; google_font="Arial"; google_font_size="Small"; google_alternate_ad_url="https://www.adstune.com/personal_ads/?bg_color=ffffff&amp;body_link=000000&amp;text_color=000000&amp;url_color=000000&amp;dateid=749406&amp;lang=fr&amp;cat=369&amp;force=1&amp;flang=fr"; GA_googleAddAdSenseSlotAttr("728x90-top", "google_ad_slot", google_ad_slot); GA_googleAddAdSenseSlotAttr("728x90-top", "google_ad_channel", google_ad_channel); GA_googleAddAdSenseSlotAttr("728x90-top", "google_ad_type", "text"); GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_border", google_color_border); GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_link", google_color_link); GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_bg", google_color_bg); GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_text", google_color_text); GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_url", google_color_url); GA_googleAddAdSenseSlotAttr("728x90-top", "google_ui_features", google_ui_features); GA_googleAddAdSenseSlotAttr("728x90-top", "google_font", google_font); GA_googleAddAdSenseSlotAttr("728x90-top", "google_font_size", google_font_size); GA_googleAddAdSenseSlotAttr("728x90-top", "google_alternate_ad_url", google_alternate_ad_url);//]]> 
</script><script type="text/javascript">//<![CDATA[ 
    GA_googleUseIframeRendering();//]]> 
</script><script type='text/javascript'>//<![CDATA[ 
GA_googleFillSlotWithSize("ca-pub-0339214227387817", "728x90-top", 728, 90);//]]> 
</script><br class="clear" /></div><div style="clear:both;"></div><style type="text/css">html body .n99fdc1,html body .n99fdc1 iframe,html body iframe[name="google_ads_frame"],html body .n99fdc1 iframe[name="google_ads_frame"],html body #wrap #page-body div.n99fdc1,html body #page-body .n99fdc1,html body div.n99fdc1{display:block!important;visibility:visible!important;float:none!important;left:inherit!important;top:inherit!important;right:inherit!important;bottom:inherit!important;margin:0 auto!important;filter:alpha(opacity=100)!important;-moz-opacity:1!important;-khtml-opacity:1!important;opacity:1!important;z-index:9999!important;text-align:center!important}html body .n99fdc1,html body .n99fdc1 iframe[name="google_ads_frame"]{width:728px!important;height:90px!important;min-height:90px!important}html body .n99fdc1 iframe{border:0px!important}html body iframe[name="google_ads_frame"]{width:100%!important;height:inherit!important;min-height:inherit!important}</style><div style="height:3px"></div><script src="https://illiweb.com/rsc/16/frm/extendedview.js" type="text/javascript"></script><form action="/post" method="post" name="post" enctype="multipart/form-data"><table width="100%" border="0" cellspacing="2" cellpadding="0" align="center"><tr><td><span class="nav"><a class="nav" href="/">Crazy Hockey League</a>&nbsp;&nbsp;::&nbsp;<h1><a href="/c7-chl-simulation" class="nav"><span>CHL | Simulation</span></a></h1>&nbsp;::&nbsp;<h1><a href="/f29-resultats" class="nav"><span>Résultats</span></a></h1></span></td></tr></table><table class="forumline" width="100%" border="0" cellspacing="1" cellpadding="0"><tr><th height="28" class="thHead" colspan="2" valign="bottom"><strong>Poster un nouveau sujet</strong></th></tr><tr><td class="row1" width="22%"><span class="gen"><b>Titre du sujet</b></span></td><td class="row2" width="78%"><span class="gen"><input class="post" style="width:450px" type="text" name="subject" value="" size="45" maxlength="255" tabindex="2" title="La longueur du titre de ce sujet doit être comprise entre 1 et 255 caractères" onkeypress="if (event.keyCode==13){return false}" /><script type="text/javascript">//<![CDATA[ 
input = document.getElementsByName('subject');//]]></script><select name="topic_color" onchange="input[0].style.color = topic_color.value" style="margin-left:10px"><option value="#660000" style="color:#660000;" >Rouge foncé</option><option value="#FF0000" style="color:#FF0000;" >Rouge</option><option value="#FF9933" style="color:#FF9933;" >Orange</option><option value="#663300" style="color:#663300;" >Marron</option><option value="#FFFF00" style="color:#FFFF00;" >Jaune</option><option value="#006600" style="color:#006600;" >Vert</option><option value="#666633" style="color:#666633;" >Olive</option><option value="#00FFFF" style="color:#00FFFF;" >Cyan</option><option value="#0000FF" style="color:#0000FF;" >Bleu</option><option value="#000099" style="color:#000099;" >Bleu foncé</option><option value="#6600FF" style="color:#6600FF;" >Indigo</option><option value="#999999" style="color:#999999;" >Gris</option><option value="#FFFFFF" style="color:#CCCCCC;" >Blanc</option><option value="#000000" style="color:#000000;" >Noir</option><option value="" style="color:;" selected="selected">Aucune</option></select><script type="text/javascript">//<![CDATA[ 
input[0].style.color = '';//]]></script></span></td></tr><tr><td class="row1" width="22%"><span class="gen"><b>Description</b></span></td><td class="row2" width="78%"><span class="gen"><input class="post" style="width:450px" type="text" name="description" value="" maxlength="255" onkeypress="if (event.keyCode==13){return false}" /></span></td></tr><tr id="parent_editor_simple" ><td class="row1" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="1"><tr><td><span class="gen" style="white-space: nowrap;"><b>Corps du message</b></span></td></tr><tr><td align="center" valign="middle"><table width="100%" border="0" cellspacing="0" cellpadding="5"><tr align="center"><td class="gensmall" colspan=""><div id="smileyContainer"><script type="text/javascript">function addSmileyPane() { $("#smileyContainer").html('<iframe name="smilies" src="/smilies.forum?mode=smilies_frame&amp;t=1509143808" frameborder="0" scrolling="auto" marginwidth="0" marginheight="0" height="350" width="220" class="row1"></iframe>'); }</script></div></td></tr></table></td></tr></table></td><td class="row2" valign="top"><span class="genmed"></span><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td valign="top"><textarea id="text_editor_textarea" class="post" name="message" tabindex="3" wrap="virtual"></textarea>&nbsp;</td><td id="smileyContainer" valign="top"><script type="text/javascript">function addSmileyPane() { $("#smileyContainer").html('<iframe name="smilies" src="/smilies.forum?mode=smilies_frame&amp;t=1509143808" frameborder="0" scrolling="auto" marginwidth="0" marginheight="0" height="350" width="220" class="row1"></iframe>'); }</script></td></tr></table></td></tr></table><table class="forumline" width="100%" border="0" cellspacing="1" cellpadding="0"><tr><td class="catBottom" colspan="2" align="center" height="28"><input type="hidden" name="lt" value="0" /><input type="hidden" name="auth[]" value="c1900dead7de9ece4c5a991c880e82f0" /><input type="hidden" name="auth[]" value="1233e4038430dbd924cc1448d5f042f3" /><input type="hidden" name="mode" value="newtopic" /><input type="hidden" name="f" value="29" /><input class="liteoption" type="submit" name="preview" value="Prévisualiser" tabindex="5" />&nbsp;&nbsp;<input class="mainoption" type="submit" name="post" value="Envoyer" tabindex="6" accesskey="s" /></td></tr></table><br /><br /> 

: 여기

private void WB_CHL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     if (Date != "") 
      PostGame(); 
     else 
      this.Close(); 
    } 

    private void PostGame() 
    { 
     HtmlDocument doc = null; 
     doc = WB_CHL.Document; 

     HtmlElementCollection inputelems = doc.GetElementsByTagName("input"); 
     inputelems.GetElementsByName("subject")[0].SetAttribute("value", Date); 

     doc.GetElementById("text_editor_textarea").SetAttribute("value", Games); 

     HtmlElementCollection inputbutton = doc.GetElementsByTagName("input"); 
     inputbutton.GetElementsByName("post")[0].Focus(); 
     SendKeys.Send("{ENTER}"); 
    } 

그리고는 HTML 소스 코드의 게시물을 수행하기 전에

1 차례 : 그것은이 라인을 충족하는 경우에 예외를

inputelems.GetElementsByName("subject")[0].SetAttribute("value", Date); 

    System.ArgumentOutOfRangeException: Value of '0' is not valid for 
    'index'. 'index' should be between 0 and -1. 
    Parameter name: index 

2 차례를 던졌습니다 : 똑같은로 1 차례

3 차례 발생 : 모든 PostGame() 함수를 통과하지만, 포럼에 게시하지 않습니다. 제대로 포럼에 모든 PostGame() 함수와 게시물을 통해 이동합니다 :

HtmlElementCollection inputbutton = doc.GetElementsByTagName("input"); 
    inputbutton.GetElementsByName("post")[0].Focus(); 
    SendKeys.Send("{ENTER}"); 

4 차례 (코드의이 부분은 잘 전환하지 않는 것).

나는 이것들에 익숙하지 않다 ... 나는 디버그를 시도하고 3 시간 이상 동안 문제를 찾았지만 찾을 수 없었다.

고마워요!

+0

제가 말했듯이 저는 비교적 새롭습니다. 샘플 입력은 무엇을 의미합니까? 예상 된 출력에 관해서는 달성 목표는 시뮬레이션 된 하키 포럼을위한 자동 게임 포스터를 만드는 것입니다. 결과를 간단한 텍스트로 내보내는 시뮬레이터 프로그램이 있는데이 페이지를 읽고 원하는 정보를 파싱합니다 (게임 당일 게임 나누기). 내가 만드는 프로그램에는 두 개의 대화 상자가 있습니다. 처음에는 어떤 날짜에 프로그램이 게임을 게시하기 시작하도록 요청하고 두 번째 프로그램은 자동으로 정보를 게시하는 웹 브라우저인지 묻습니다. –

+0

내가 볼 수 있도록 소스 코드를 게시 했으므로 계정을 만들어 포럼의 일반 관리자로 받아 들여서 게시 기능에 액세스해야합니다. –

답변

0

전체 HTML을 게시하지는 않았지만 iframe 초가 포함되어 있다고 알 수 있습니다. DocumentCompleted은 - 놀람 - 문서로드가 완료되면 호출됩니다.

그러나 HTML에 iframe이 여러 개있는 경우 여러 개의 문서가 있습니다.

iframe이 가리키는 문서로드를 완료하면 여러 번 호출됩니다.

이벤트 처리기에서 WebBrowserDocumentCompletedEventArgs 매개 변수의 Url 속성을 검사하여로드 된 문서를 확인할 수 있습니다. 기본 페이지로드 만 처리하려는 경우 다음을 사용하여 수행 할 수 있습니다.

private void OnWebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    var webBrowser = (WebBrowser)sender; 

    if (e.Url == webBrowser.Url) 
    { 
     // main page loaded 
    } 
} 
+0

글자 제한 때문에 전체 HTML 코드를 게시 할 수는 없지만 내가 제안한 것을 시도 할 것입니다! 감사 ! –

+0

원래 문제는 해결되지 않았습니다.나는 여전히 ArgumentOutOfRangeException을 얻습니다 :/DocumentCompleted 안에이 함수를 삽입해야합니까? 그리고 원래 DocumentCompleted에있는 내용을 원래 if 문에 넣었습니까? –

+0

예외가 발생하면 주 문서가 준비되지 않았다는 의미입니다. iframe에서 이벤트를 건너 뛸 필요가 있습니다. –

관련 문제