2009-04-29 114 views
1

我正在做一些自动化工作,并可以让我的方式在一个网站&发布到HTML表单好吗,但现在我正迎来一个新的挑战,Ajax形式。是否有可能以编程方式填写Ajax表单?

由于没有阅读的源代码,我只是想知道是否可以在C#中以主动方式填充Ajax表单。我目前正在使用不可见的axWebBrowser。

在此先感谢您的帮助!

回答

6

是的,但我建议使用不同的方法来请求/响应包括常规页面的服务器页面,以及AJAX处理程序页面。

在c#中,尝试使用WebRequest/WebResponse或更专用的HttpWebRequest/HttpWebResponse类。

对于允许Javascript向服务器发送HTTP请求的技术而言,Ajax只不过是一个“奇特”名称,该服务器通常实现一些为Javascript调用者生成专用轻量级内容的处理程序(共同编码为JSON) 。

因此,为了模拟AJAX调用,您所要做的就是检查您的目标应用程序(您希望“发布”到的网页)并查看AJAX通信使用的格式 - 然后复制页面的使用WebREquest/WebResponse类从C#执行Javascript行为。

请参阅Firebug - 一个伟大的工具,允许您检查一个网页,以确定它所做的调用,页面以及这些页面响应的内容。它在检查AJAX调用方面也做得很好。

这里有一个如何做一个网络请求,一个很简单的例子:

HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create("http://www.mysite.com"); 

using (HttpWebResponse resp = (HttpWebResponse)wReq.GetResponse()) 
{ 
    // NOTE: A better approach would be to use the encoding returned by the server in 
    // the Response headers (I'm using UTF 8 for brevity) 
    using (StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8)) 
    { 
     string content = sr.ReadToEnd(); 
     // Do something with the content 
    } 
}  

一个贴子还要求,但有不同的方法。查看this page了解如何做一个非常简单的帖子的例子。

编辑 - 对使用Firebug检查网页的行为细节

我的意思是,通过检查你想复制的页面是使用工具(我使用Firebug - 在Firefox)来确定流量页面和服务器之间的信息。

使用Firebug,您可以通过使用“Net”和“Console”面板来完成此操作。 “网络”面板列出加载页面时浏览器执行的所有请求。而“控制台”将列出页面加载后发生的页面与服务器之间的通信。那些在页面加载后发生的通信基本上是您想要复制的AJAX调用(注意:网络监控必须在Firebug中为此工作)

检出Michael Sync's tutorial了解更多关于Firebug并尝试使用控制台面板来了解有关AJAX请求的更多信息。

关于“使用WebRequest/WebResponse从C#复制页面的行为” - 您必须认识到的是,就像我之前所说的那样,Javascript AJAX调用只不过是一个HTTP请求。这是一个HTTP请求,Javacript使“幕后”或带外到Web服务器。要复制这一点,它与复制一个正常的GET或一个正常的POST类似,正如我上面显示的那样。这就是Firebug进场的地方。使用它可以查看请求,如Javascript所做的那样 - 查看控制台面板,并查看请求消息的外观。

然后,您可以使用与上述相同的技术,使用HttpWebRequest/HttpWebResponse与Javascript所做的请求类型相同,只能从C#中完成。

Gregg,我希望这可以澄清我的答案,但除此之外,我建议玩Firebug,也许可以了解更多关于HTTP协议如何工作以及AJAX如何作为技术的工作。

+0

看看Wireshark,看看线路上发生了什么,直到数据包级别。它具有出色的过滤/搜索工具。 – tomfanning 2009-04-29 18:57:23

1

你看过Selenium吗?据我所知,你可以写在C#中的测试案例,我知道我们的测试已经成功地使用过它的UI测试一个启用Ajax ASP.NET网站

http://seleniumhq.org/

+0

感谢您的链接。 – MrGreggles 2009-04-30 00:21:36

相关问题