我在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)
{
}
}
}
请看下面。突出显示的部分是我期待验证码的地方。
我必须告诉你,我不是一个网页设计师,所以我只能理解非常基本的网站是如何工作的。
我通过这个论坛上的几个问题去并没有什么帮助了我。
Internet Explorer中也使用.NET浏览器从后面,但在使用IE浏览器,我可以看到的验证码是越来越加载。那么,为什么这个JavaScript调用$(document).ready
没有在.NET浏览器中调用。请看下面:
我已经试过后在一个全新的项目中使用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>
有没有可用于测试的网址?最有可能的一个javascript错误与IE不兼容,你的问题中的https://www.irctc.co.in/eticketing/loginHome.jsf与我在浏览器中看到的不一样。 –
@AlexanderHiggins:登录后,URL更改。这就是为什么你没有看到相同的URL。不幸的是,您必须使用“https://www.irctc.co.in/eticketing/loginHome.jsf”并使用正确的凭据登录才能移至有问题的页面。我也从IE浏览器显示图像。它得到加载,但没有得到加载在.NET浏览器。 – Rohit
@AlexanderHiggins:这是URL:https:// www.irctc.co.in/eticketing/trainbetweenstns.jsf,其中验证码未在.NET浏览器中加载。从第一个URL登录后,您不能再次在同一个选项卡,新选项卡等中手动使用此URL,因为它会再次登录到登录页面。 – Rohit