Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测新启动的浏览器进程中的页面加载是否失败?_C#_Asp.net_Logging_Error Logging - Fatal编程技术网

C# 如何检测新启动的浏览器进程中的页面加载是否失败?

C# 如何检测新启动的浏览器进程中的页面加载是否失败?,c#,asp.net,logging,error-logging,C#,Asp.net,Logging,Error Logging,我使用Process.Start(“firefox.exe”http://localhost/page.aspx"); 我如何知道页面是否失败? 或 如何通过HttpWebRequest知道HttpWebResponse页面是否失败 当我使用 HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("somepage.aspx"); HttpWebResponse loWebResponse = (HttpWebResponse)myRe

我使用
Process.Start(“firefox.exe”http://localhost/page.aspx");
我如何知道页面是否失败?
或
如何通过HttpWebRequest知道HttpWebResponse页面是否失败

当我使用

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("somepage.aspx");
HttpWebResponse loWebResponse = (HttpWebResponse)myReq.GetResponse();
Console.Write("{0},{1}",loWebResponse.StatusCode, loWebResponse.StatusDescription);
如何返回错误详细信息

不需要额外的插件和框架。我只想通过.net选择这个问题


有什么想法吗?请使用Watin自动化firefox,而不是Process.Start。它是一个浏览器自动化框架,可以让您正确地监控正在发生的事情


编辑:另请参见Google Webdriver

使用Watin自动化firefox,而不是Process.Start。它是一个浏览器自动化框架,可以让您正确地监控正在发生的事情


编辑:另请参见Google Webdriver

如果您正在生成一个子进程,这相当困难,您可能需要使用每个浏览器的特定API(例如,FF和IE之间的API不同)

在许多情况下,exe检测到一个现有实例并将请求转发到那里(因此您不能信任退出代码,因为页面甚至还没有在正确的exe中被请求)

就我个人而言,我尽量避免在这种情况下使用任何特定的浏览器;只需启动url:

Process.Start("http://somesite.com");
这将使用用户的默认浏览器。但是你必须希望它出现——如果没有大量的工作,你无法(可靠而有力地)从外部检查它


另一种选择是自己读取数据(
WebClient.Download*
)-但这可能会在复杂的cookie、登录、用户代理意识等方面出现问题。

如果您正在生成一个子进程,这相当困难,您可能需要使用每个浏览器的特定API(例如,FF和IE之间的API不同)

在许多情况下,exe检测到一个现有实例并将请求转发到那里(因此您不能信任退出代码,因为页面甚至还没有在正确的exe中被请求)

就我个人而言,我尽量避免在这种情况下使用任何特定的浏览器;只需启动url:

Process.Start("http://somesite.com");
这将使用用户的默认浏览器。但是你必须希望它出现——如果没有大量的工作,你无法(可靠而有力地)从外部检查它


另一种选择是自己读取数据(
WebClient.Download*
)-但这可能会与复杂的cookie、登录、用户代理感知等有关。

使用HttpWebRequest类或WebClient类来检查这一点。我不认为Process.Start会在URL不存在的情况下返回一些内容。

使用HttpWebRequest类或WebClient类来检查这一点。我不认为Process.Start会在URL不存在时返回一些内容。

不要以这种形式启动页面。而是创建一个本地
http://localhost:/wrapper.html
哪个加载
http://localhost/page.aspx
然后是
http://localhost:/pass.html
http://localhost:/fail.html
。localhost:是应用程序实现的一个普通HTTP服务器接口


其思想是Javascript在浏览器内部为您提供了一个API,这比浏览器外部的API标准得多。由于wrapper.html上的Javascript与后续资源来自同一服务器甚至端口,因此在当前浏览器中应该满足相同的源策略。

不要以这种形式启动页面。而是创建一个本地
http://localhost:/wrapper.html
哪个加载
http://localhost/page.aspx
然后是
http://localhost:/pass.html
http://localhost:/fail.html
。localhost:是应用程序实现的一个普通HTTP服务器接口


其思想是Javascript在浏览器内部为您提供了一个API,这比浏览器外部的API标准得多。由于wrapper.html上的Javascript与后续资源来自同一个服务器甚至端口,因此应满足当前浏览器中的同源策略。

您能给我们提供更多信息吗?例如,如果你用你正在使用的技术来标记你的问题,那会有很大帮助。@boris callend:我使用.net 3.5。我有一个服务类,它打开了一些页面,在这个页面中有一个方法,可以在页面加载中做一些事情。如果页面失败,我需要登录。你能给我们更多的信息吗?例如,如果你用你正在使用的技术来标记你的问题,那会有很大帮助。@boris callend:我使用.net 3.5。我有一个服务类,它打开了一些页面,在这个页面中有一个方法,可以在页面加载中做一些事情。如果页面失败,我需要登录。我不知道。看起来值得一看。你也可以看看seleniumhq.org上的selenium网站,进行web自动化测试。我不知道。看起来值得一看。你也可以看看seleniumhq.org上的seleniumhq网站进行web自动化测试。谢谢,我想是的,我知道我在尝试使用HttpWebRequest,HttpWebResponse。谢谢,我想是的,我知道我在尝试使用HttpWebRequest,HttpWebResponse。