2017-02-19 19 views
2

Я действительно изучал учебники, но html у меня разные, и я пробовал много вещей (код, который я поставил, это последнее, что я пробовал). Я также предоставил вам html.Вход в систему сбой

WebBrowser1.Navigate("THE_WEBSITE") 
    WebBrowser1.Document.GetElementById("tbtLoginID").SetAttribute("onfocus", "javascript:$(this).val('ID_GOES_HERE');$('#wrong_password_board').css('display','none');") 
    WebBrowser1.Document.GetElementById("tbtPassword").SetAttribute("value", "PASS_PROBABLY_GOES_HERE") 
    WebBrowser1.Document.GetElementById("div_123").SetAttribute("onpress", "rockLogin($('#loginform'))")' 

И это HTML (я думаю, что это все, что имеет значение, веб-сайт является www.microvolts.com в любом случае)

<form id="loginform" action="/Account/login" method="POST"> 
     <div class="left1"> </div> 
     <div class="login_info1"> 
      <div class="icon_rh"> 
      </div> 
      <div class="floatleft" style="margin-bottom: 2px;"> 
       <input id="tbtLoginID" width="110px" maxlength="25" height="17px" class="text_box" value="Login ID" tabindex="1" onfocus="javascript:$(this).val('');$('#wrong_password_board').css('display','none'); "> 
      </div> 
      <div class="floatleft"> 
       <div id="loginLoginIdDiv1"> 
        <input type="text" onfocus="javascript:$(this).val('');$('#wrong_password_board').css('display','none'); " value="Password" tabindex="2" class="text_box" name="passwordFaked" size="20" width="110px" style="display: none;"> 
        <div id="loginPasswordDiv2" style=""> 
         <input id="tbtPassword" width="110px" type="password" tabindex="2" maxlength="25" height="17px" class="text_box"> 
        </div> 
       </div> 

       <div id="wrong_password_board" class="wrong_password wrong_passwordid ErrorMsg" style="display: none;"> 
      <div class="topleft"></div> 
      <div class="topmiddle">Invalid Login ID and/or Password.</div> 
      <div class="topright"></div> 
     </div> 
      </div> 
     </div> 
     <div class="login_info2"> 
      <div class="row1"> 
       <a href="javascript:void(0);" onclick="fbConnect();" class="login_facebook"><span class="left"></span><span class="middle">Login</span><span class="right"></span></a> 
      </div> 
      <div class="row1" style="width: 80px"> 
       <span style="float: left; margin-right: 3px;"> 
        <div id="div_123" class="toplogin RockButton" style="width: 60px; height: 19px;"> 
         <div id="123" onclick="rockLogin($('#loginform'))" style="width: 100%; height: 100%;" class="rbtdiv"> 
          <div class="text"> 
           Login</div> 
         </div> 
         <div class="rbtmask" style="z-index: 100; position: absolute; display: none; background: grey; 
          opacity: 0.2; cursor: default; width: 100%; height: 100%; top: 0px; left: 0px;"> 
         </div> 
        </div> 
       </span> 
       <div class="btn_question forgetPasswordButton "> 

        <div id="ifClickThisBtn" style=" display:none;" data-ifclick="false"></div> 
       </div> 
       <div id="forgetPassword" class="tip_forgot_password"> 
          <div class="ajaxLoadingMask"> 
           <img src="/images/ajaxLoading2.gif" style="margin-left: 150px; margin-top: 9px; position: absolute; display: block;" class="ajaxLoading" alt=""> 
          </div> 
          <div class="lefttfp"> 
           <div class="l1l"></div> 
           <div class="l1r"></div> 
          </div> 
          <div class="middletfp"> 
           <div class="closetfp"></div> 
           <div class="title">Forgot Password or Login ID</div> 
           <div class="email_form"> 
            <input type="text" value="Enter registered email" name="emailAddress" class="password_recovery_textbox"> 

            <div class="wbtn1 formSubmitBtn" onclick="javascript:forgetPassword();return false;" style="float: left; margin: 2px 0px 0px 5px; cursor: pointer;"> 
            <span class="wbtn1_left"></span><span class="wbtn1_middle" style="padding-left: 10px; 
            padding-right: 10px;">Submit</span><span class="wbtn1_right"></span></div> 
            <div class="wrong_email"></div> 
           </div> 
           <div id="invalideEmailAddress" style="display:none;"> Please enter a valid email address.</div> 
          </div> 
          <div class="righttfp"></div> 
         </div> 
      </div> 
     </div> 
     <div class="right1"> </div> 

     </form> 

Форма Войти имеет JavaScript элементы таким образом, я полагал, что я мог бы просто напишите его с правильным входом в него, но нет. Когда я запускаю его, я получаю сообщение об ошибке из первой строки: System.NullRefferenceException, все мои коды дали это.

Должен признаться, я, вероятно, не делал все исследования, которые я мог, но мне нужно сделать это быстро, и это последнее, что может мне помочь.

+0

Необходимо дождаться, когда веб-браузер загрузит страницу, прежде чем вы начнете ее взаимодействовать. Подпишитесь на событие ** ** DocumentCompleted ** (https://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documentcompleted (v = vs.110) .aspx) и сделайте свои изменения оттуда. –

+0

Я посмотрю на это и посмотрю, работает ли он. – Aixiom

ответ

0

Как уже упоминалось выше в комментарии от @Visual Vincent, вам нужно добавить событие DocumentCompleted. Это событие возникает, когда документ завершил загрузку.

Private docCompleted As Boolean = False 'put this at class level 

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 
     If docCompleted Then Exit Sub 
     If WebBrowser1.Document.GetElementById("tbtLoginID") IsNot Nothing Then 
      WebBrowser1.Document.GetElementById("tbtLoginID").SetAttribute("value", "YOURUSERNAME") 
     End If 
     If WebBrowser1.Document.GetElementById("tbtPassword") IsNot Nothing Then 
      WebBrowser1.Document.GetElementById("tbtPassword").SetAttribute("value", "YOURPASSWORD") 
     End If 
     If WebBrowser1.Document.GetElementById("div_123") IsNot Nothing Then 
      WebBrowser1.Document.InvokeScript("rockLogin") 
     End If 

     docCompleted = True 
    End Sub 

Код, указанный выше, проверяет каждый элемент, чтобы гарантировать его отсутствие, и если это не так, мы можем установить атрибуты, которые нам нужны. Также мы можем указать InvokeScript документа: rockLogin, этот скрипт выполняет вход в систему. docCompleted препятствует тому, чтобы страница выполняла обратную передачу, когда она была закончена, и вы устанавливаете атрибуты, которые она хочет перезагрузить страницу и т. Д., Это не требуется, но это мешало нескольким обратным передачам, когда я пытался.

На другой ноте вы не упомянули, если вы делали это в случае щелчка или что, если так установить docCompleted к ложным, прежде чем перейти на свою страницу таким образом, переменная сбрасывается каждый раз ...

Примечание: Протестировано и протестировано - пожалуйста, не оставляйте свои учетные данные на общедоступном форуме ...

+0

Я по-прежнему получаю те же ошибки, к сожалению, в начале кода, как всегда. И да, я старался не включать их, но во втором редактировании я забыл :( – Aixiom

+0

Какие ошибки вы не упомянули. Код, вставленный в новое решение ***, работает просто отлично ***, вам нужно чтобы обновить проблемы, которые у вас есть. – Codexer

+0

http://i.imgur.com/5dULUjH.png – Aixiom