使用phantomjs进行Windows身份validation

我正在研究phantomjs作为我最新项目中UI自动化的可能解决方案,但我似乎无法让Windows身份validation正常工作。 我已经尝试设置page.settings.userNamepage.settings.password ,但下面的代码片段总是获得401 ,底层堆栈不会解决它。 我的搜索失败了,所以我来到社区寻求帮助。

 var page = require('webpage').create(); page.onResourceReceived = function(response) { phantom.exit(response.status); }; page.open('http://bing.com'); 

对我来说这个案子很完美。 迈克罗杰斯解决方案

 var _driverOptions = new PhantomJSOptions(); var _driverService = PhantomJSDriverService.CreateDefaultService(); _driverOptions.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"); _driver = new PhantomJSDriver(_driverService, _driverOptions); using (Impersonation.LogonUser(domain, login, pass, LogonType.Interactive)) { using (var proxy = new NtlmProxy(new Uri("http://yoursite.com/"), options)) { _driver.Navigate().GoToUrl(url); } } 

有一个开放的PhantomJS问题正在进行讨论。 看起来PhantomJS不支持(自动/集成)NTLM身份validation,这意味着它不适用于需要集成Windows身份validation的服务器。

您可以将域凭据添加到URL:

 var driver = new PhantomJSDriver(); driver.Manage().Window.Size = new System.Drawing.Size(1024, 1024); driver.Url = "http://myusername:mypassword@localhost/myapp"; 

我认为这可能是第2版,我不确定。 AFAIK不支持传递当前用户的凭据,这是一种耻辱。