我正在研究phantomjs作为我最新项目中UI自动化的可能解决方案,但我似乎无法让Windows身份验证正常工作。我已尝试设置page.settings.userName
和page.settings.password
,但下面的代码段总是得到 401 ,而底层堆栈则不会解决问题。我的搜索失败了,所以我来到社区寻求帮助。
var page = require('webpage').create();
page.onResourceReceived = function(response) {
phantom.exit(response.status);
};
page.open('http://bing.com');
答案 0 :(得分:2)
有一个开放的PhantomJS Issue正在进行讨论。似乎PhantomJS不支持(自动/集成)NTLM身份验证,这意味着它不适用于需要集成Windows身份验证的服务器。
答案 1 :(得分:0)
您可以将域凭据添加到网址:
var driver = new PhantomJSDriver();
driver.Manage().Window.Size = new System.Drawing.Size(1024, 1024);
driver.Url = "http://myusername:mypassword@localhost/myapp";
我认为这可能是第2版,我不确定。 AFAIK不支持传递当前用户的凭据,这是一种耻辱。
答案 2 :(得分:0)
对我来说这个案子很完美。 mike-rogers solution
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);
}
}