2017-07-02 113 views
0

我在C#語言的新的,我一直在試圖自動化在Visual Studio 2015年C#.NET基於web瀏覽器不顯示圖像

我使用基於.NET的WebBrowser 僅用於個人使用網站已經完成了文檔解析,使用了Timer,正確使用了DocumentCompleted事件來等待網頁完全加載,然後解析內容,試圖使異步事件表現得像同步事件一樣(爲了加載通過單擊鏈接生成的HTML內容完全加載的網頁)等,以便瀏覽網頁自動化的各個階段:登錄 - >在站點之間獲取列車 - >單擊立即預訂鏈接 - >進入下一頁並填寫乘客詳細信息。

一切工作正常,但我現在卡在最後階段,即「轉到下一頁,並填寫乘客的詳細信息」有一個驗證碼圖像,必須解決進入付款頁面。不要誤解我的意思,因爲我沒有試圖讓這個驗證碼自動解析。這裏的問題是,我沒有看到只有當這個JavaScript調用被調用$(document).ready轉換爲加載的圖像。

我以爲我的項目有它停下來,讓驗證碼,因此,我創建了一個非常基本的新項目,只添加下面的代碼和導航通過不同的階段自己看到一些bug的代碼,如果驗證碼真的加載,但不幸的是它不會加載。

namespace TestWebBrowser 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      webBrowser1.Navigate("https://www.irctc.co.in/eticketing/loginHome.jsf"); 
     } 

     private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 

     } 
    } 
} 

請看下面。突出顯示的部分是我期待驗證碼的地方。

enter image description here

我必須告訴你,我不是一個網頁設計師,所以我只能理解非常基本的網站是如何工作的。

我通過這個論壇上的幾個問題去並沒有什麼幫助了我。

Internet Explorer中也使用.NET瀏覽器從後面,但在使用IE瀏覽器,我可以看到的驗證碼是越來越加載。那麼,爲什麼這個JavaScript調用$(document).ready沒有在.NET瀏覽器中調用。請看下面:

enter image description here

我已經試過後在一個全新的項目中使用CefSharp,我可以看到的驗證碼是越來越加載在其鉻網頁瀏覽器。但是我已經使用基於.NET的web瀏覽器進行了很多編碼,因此我想在此刻使用後者來解決這個問題。

這是發生是因爲.NET web瀏覽器是使用一些很老的IE版本的配置?

請幫我理解。

更新1:添加JavaScript

<script type="text/javascript"> 
     $(document).ready(function(){ 
      var isJsBlocked=0; 
      if (typeof(nlpLoadCaptchaAsync) == 'function'){      
       nlpLoadCaptchaAsync(); 
      }else{ 
       isJsBlocked=1; 
      } 
      setTimeout(function(){ 
       var isNLPCaptcha = document.getElementById('nlpIdentifier');       
       if(isNLPCaptcha == null || isNLPCaptcha=='') { 
        var nlptrack = new Image(); 
        nlptrack.src="http://irctclive.nlpcaptcha.in/temp_redirect_count/irctc_timeout.php?ref=f2c5d744485b0b4251461454db791111&isJsBlocked="+isJsBlocked+"&dynamicParameter="+Date.now(); 
        nlpCaptchaTimeOut(true); 

       } 

      }, 5000); 

     }); 
     </script> 
+0

有沒有可用於測試的網址?最有可能的一個javascript錯誤與IE不兼容,你的問題中的https://www.irctc.co.in/eticketing/loginHome.jsf與我在瀏覽器中看到的不一樣。 –

+0

@AlexanderHiggins:登錄後,URL更改。這就是爲什麼你沒有看到相同的URL。不幸的是,您必須使用「https://www.irctc.co.in/eticketing/loginHome.jsf」並使用正確的憑據登錄才能移至有問題的頁面。我也從IE瀏覽器顯示圖像。它得到加載,但沒有得到加載在.NET瀏覽器。 – Rohit

+0

@AlexanderHiggins:這是URL:https:// www.irctc.co.in/eticketing/trainbetweenstns.jsf,其中驗證碼未在.NET瀏覽器中加載。從第一個URL登錄後,您不能再次在同一個選項卡,新選項卡等中手動使用此URL,因爲它會再次登錄到登錄頁面。 – Rohit

回答