Chrome Webdriver在无头模式下丢失用户凭据

时间:2017-06-23 14:15:43

标签: unit-testing google-chrome selenium selenium-webdriver continuous-integration

我正在尝试为CI硒测试设置无头铬。 我们的网络服务使用AD进行授权。无论出于何种原因,当chromedriver设置为无头模式时,它会被“拒绝访问” - 401.2"在尝试访问我们的任何服务页面时。但是一旦我正常启动它(带窗口而不是无头),一切正常。

以下是我设置webdriver的方法:

var chromeOptions = new ChromeOptions{
    BinaryLocation = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"/AppData/Local/Google/Chrome SxS/Application/chrome.exe"
};
chromeOptions.AddArguments(new List<string>() { "headless", "disable-gpu", "no-sandbox" });
var driver = new ChromeDriver(chromeOptions);
driver.Navigate().GoToUrl(mainPageURL);

尝试使用此设置运行任何测试(并获得401.2)后,IIS会记录以下内容:

2017-06-23 11:25:12 ::1 GET / - 39731 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+HeadlessChrome...

但是一旦我删除&#34;无头&#34;从参数,日志看起来像这样:

2017-06-23 11:26:15 ::1 GET / - 39731 [USER_LOGIN] ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome...

用我的登录代替[USER_LOGIN]。

因此,似乎用户登录在&#34;无头&#34;模式。 到目前为止,我已经与#34; profile-directory = Default&#34;&#34;参数,以及运行旧版本的chrome(我现在使用的是Canary 61.0.3138.0 64bit - 最新版本。)

1 个答案:

答案 0 :(得分:0)

刚出门,但https://user:pass@test.com/test做了什么?这就是我询问mainPageURL是什么的原因。

<强>更新

Alert alert = wait.until(ExpectedConditions.alertIsPresent());     
alert.authenticateUsing(new UserAndPassword(**username**, **password**));

也许?