无法通过Windows安全授权弹出窗口(量角器)

时间:2018-01-24 16:09:21

标签: internet-explorer protractor internet-explorer-11 windows-authentication basic-authentication

我在IE中遇到了授权。在我的情况下:我有adfs授权,将我从我的网站重定向到adfs,再到我的网站再次重定向我。

我试过这种方式:

browser.switchTo().alert().sendKeys("Text");

但这仅适用于第一个输入字段。

对于第二个输入字段:

browser.switchTo().alert().sendKeys(protractor.Key.TAB);

司机失去了焦点。

我尝试了Autoit的第二种方式:

helper.loginIE = function(name, password) {
    let formsAuthenticationArea = element.all(by.className(element)).get(0);
    formsAuthenticationArea.click();

    browser.call(function () {
        au.Init()
        au.WinWaitActive("Windows Security", "", 3);
        au.Send(name);
        au.Send("{TAB}");
        au.Send(password);
        au.Send("{ENTER}");                      
   })
};

Autoit的情况与首次单击元素异步工作。

  

node.js - 7.8.1;

     

量角器 - 5.2.2;

     

selenium-webdriwer - 3.8.1;

     

IEDriver - 3.7

     

IE11

capabilities: {
    'browserName': 'internet explorer',
    'ignoreProtectedModeSettings': true,
    'disable-popup-blocking': true,
    'enablePersistentHover': true,
    'nativeEvents': false,
    'unexpectedAlertBehaviour': 'ignore',
    'acceptSslCerts': true,
    'trustAllSSLCertificates': true
}

Windows安全提示显示:

enter image description here

1 个答案:

答案 0 :(得分:0)

您的身份验证对话框不是浏览器对话框,因此量角器无法在本机自动启动,但您可以使用nodejs调用外部工具来自动启动它。

选项1)使用java.awt.Robot类 Robot是JDK中的内置类,因此您无需其他库来实现此解决方案。

一般步骤如下:

  1. 使用Robot类捕获auth对话框(可能通过对话框标题)
  2. 使用Robot类输入用户名和密码,然后单击“确定”按钮
  3. 将java类文件复制到量角器项目
  4. 使用nodejs processchild-process或其他模块来执行Java CMD 运行java类
  5. 缺点:此解决方案只能在浏览器在本地打开时使用(使用directConnet或seleniumAddress是localhost)。因为机器人无法操作远程机器的桌面。

    要打破Robot类的local限制,一种方法是将上面的类文件从脚本机器传输到远程浏览器机器。另一种可能的方法是使用Remote Robot,我以前从未尝试过在Google上搜索。