2017-07-02 116 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

回答