简短版本:
我希望确保请求URL(部分匹配)(客户端)。
长版:
我希望自动化部分测试。目前我使用Fiddler2手动验证。
以下是该方案:
我想在C#中验证步骤2是通过进行部分匹配(例如包含{string})来实现的。
问题:
我该怎么办呢?我已经开始研究HttpWebRequest
类和FiddlerCore
了,但是我喜欢使用最简单的代码(所以其他团队成员在需要时进行更新)会让我问到StackOverflow的用户会推荐什么。
答案 0 :(得分:7)
看看SharpPcap。它基于pcap(Windows上的WinPcap),它是受欢迎的Wireshark使用的数据包捕获库。
CodeProject上有一个很棒的教程,有许多示例代码可以帮助您入门:http://www.codeproject.com/Articles/12458/SharpPcap-A-Packet-Capture-Framework-for-NET
一旦掌握了数据包(SharpPcap捕获,而不是解析),您可以使用Packet.Net将数据包解析成可用的内容(在您的情况下为HTTP通信)。
答案 1 :(得分:1)
编辑:当我阅读问题时,没有看到#2作为中间网址,它看起来像是(唯一的)重定向操作。根据您的browser of choice, and the type of redirect performed,您可以使用Selenium来阅读页面引荐来获取重定向。
WebDriver driver; // Assigned elsewhere
JavascriptExecutor js = (JavascriptExecutor) driver;
// Call any javascript
var referrer = js.executeScript("document.referrer");
我建议您在C#中使用Selenium Webdriver来满足您的所有网站/应用测试需求。它与NUnit,MSTest和其他测试框架非常完美地集成 - 它非常易于使用。
使用Selenium Webdriver,您将从C#测试代码启动自动浏览器实例(Firefox,Chrome,Internet Explorer,PhantomJS等)。然后,您将使用简单的命令控制浏览器,例如“转到URL”或“在输入框中输入文本”或“单击按钮”。 See more in the API.
它也不需要其他开发人员 - 他们只是运行测试套件,并假设他们安装了浏览器,它将工作。我已成功地使用它,在开发人员团队中进行了数百次测试,每个开发人员都有不同的浏览器偏好(即使是我们每次调整的测试)以及团队构建服务器。
对于此测试,我会go to the url in step 1,然后是wait for a second,并在步骤3中阅读网址。
以下是一些示例代码,改编自Introducing the Selenium-WebDriver API by Example。由于我不知道您要查找的URL和{string}
(此示例中为“cheese”),因此样本没有太大变化。
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
// Requires reference to WebDriver.Support.dll
using OpenQA.Selenium.Support.UI;
class RedirectThenReadUrl
{
static void Main(string[] args)
{
// Create a new instance of the Firefox driver.
// Notice that the remainder of the code relies on the interface,
// not the implementation.
// Further note that other drivers (InternetExplorerDriver,
// ChromeDriver, etc.) will require further configuration
// before this example will work. See the wiki pages for the
// individual drivers at http://code.google.com/p/selenium/wiki
// for further information.
IWebDriver driver = new FirefoxDriver();
//Notice navigation is slightly different than the Java version
//This is because 'get' is a keyword in C#
driver.Navigate().GoToUrl("http://www.google.com/");
// Print the original URL
System.Console.WriteLine("Page url is: " + driver.Url);
// @kirbycope: In your case, the redirect happens here - you just have
// to wait for the new page to load before reading the new values
// Wait for the page to load, timeout after 10 seconds
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until((d) => { return d.Url.ToLower().Contains("cheese"); });
// Print the redirected URL
System.Console.WriteLine("Page url is: " + driver.Url);
//Close the browser
driver.Quit();
}
}
答案 2 :(得分:0)
听起来你想要嗅探HTTP流量。您可以使用winpcap等数据包捕获驱动程序,导入该DLL并进行测试,或者使用@SimpleCoder提到的 SharpPcap 。
最小努力的路径是写FiddlerScript Addon,检查请求并在必要时重定向。
答案 3 :(得分:0)
跟进: 我最终使用Telerik的代理发送HTTP请求并通过C#解析响应。这是用作跳板的文章:
https://docs.telerik.com/teststudio/advanced-topics/coded-samples/general/using-the-http-proxy