我正在尝试导航到localhost站点上的应用程序,该站点需要使用PhantomJSDriver进行身份验证并将username:password传递到URL。为了捕获响应代码,我使用了Jim Evan的例子https://github.com/jimevans/WebDriverProxyExamples中的Fiddler代理。
PhantomJSDriver成功导航(使用NTLM / Basic身份验证)但 Fiddler无法捕获流量。
public static int NavigateTo(this IWebDriver driver, string targetUrl, TimeSpan timeout, bool printDebugInfo)
{
int responseCode = 0;
DateTime endTime = DateTime.Now.Add(timeout);
SessionStateHandler responseHandler = delegate(Session targetSession)
{
if (targetSession.responseCode >= 300 && targetSession.responseCode < 400)
{
targetUrl = targetSession.GetRedirectTargetURL();
}
else
responseCode = targetSession.responseCode;
};
// Attach the event handler, perform the navigation, and wait for
// the status code to be non-zero, or to timeout. Then detach the
// event handler and return the response code.
FiddlerApplication.AfterSessionComplete += responseHandler;
driver.Url = targetUrl;
while (responseCode == 0 && DateTime.Now < endTime)
{
System.Threading.Thread.Sleep(100);
}
FiddlerApplication.AfterSessionComplete -= responseHandler;
return responseCode;
}
当使用具有相同应用程序的ChromeDriver以及不需要使用PhanotmJSDriver进行身份验证的网站时,我能够捕获流量。它无法使用的唯一场景是PhantomJSDriver +身份验证网站。
更新 我发现这个问题归功于 Dead Link <击> http://docs.telerik.com/fiddler/observe-traffic/troubleshooting/notraffictolocalhost/ 击>。这与身份验证无关,而是从localhost获取流量。
解决方案是使用本地计算机名代替URL中的localhost。
答案 0 :(得分:1)
感谢http://docs.telerik.com/fiddler/observe-traffic/troubleshooting/notraffictolocalhost/,我发现了这个问题。它与身份验证无关,而是从localhost获取流量。我不知道为什么,但似乎使用PhantomJSDriver导航到localhost url和Fiddler捕获流量的组合不起作用。
解决方案是使用本地MACHINE NAME代替URL中的“localhost”。