如何在Jasmine JS中关闭本机Web浏览器弹出窗口?

时间:2015-05-20 11:28:22

标签: node.js google-chrome selenium jasmine protractor

如何在Jasmine JS中关闭本机Web浏览器弹出窗口?

我无法成功关闭此对话框,并且它会一直显示在所有正在运行的内容中。

请你的帮助!

代码:

describe('LiveSite Portal - Client perform a call', function() {

  it('LiveSite - Home Page', function() {
       liveSiteHome();
    });

  it('LiveSite Portal - Client perform a call', function() {

        browser.getAllWindowHandles().then(function (handles) {      
        browser.switchTo().window(handles[handles.length - 1]);

            var alertDialog = browser.switchTo().alert().thenCatch(function (e) {
                if (e.code !== 27) { throw e; }
            })
            .then(function (alert) {
                if (alert) {
                    expect(alertDialog.getText()).toEqual("External Protocol Request");
                    return alert.dismiss()
                }

            element(by.css("span.hide-sm.ng-binding")).click();
            browser.sleep(3000); 
            });

            //close the native popup
            browser.switchTo().window(handles[0]);
            browser.sleep(5000); 
        });
    });
});

实际结果:

enter image description here

1 个答案:

答案 0 :(得分:0)

首先,您无法使用protractor / selenium处理此类弹出窗口 - 它不是javascript弹出窗口,您无法切换到它或控制。最好的办法是通过调整浏览器所需的功能,偏好来避免首先打开弹出窗口。

我还没有针对google-chrome的解决方案,但对于Firefox,您需要通过定义自定义Firefox配置文件来设置以下首选项(请参阅How To):

通过这种方式,您可以让Firefox知道不要处理外部协议链接而不执行任何操作。