node.js - 如何在 Jasmine JS 中关闭 native Web 浏览器弹出窗口?

标签 node.js google-chrome selenium jasmine protractor

如何在 Jasmine JS 中关闭 native 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

最佳答案

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

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

这样您就可以让 Firefox 知道不处理外部协议(protocol)链接并且不执行任何操作。

关于node.js - 如何在 Jasmine JS 中关闭 native Web 浏览器弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30348339/

相关文章:

selenium - 使用 Appium 执行 swipe() 时提到的 `steps` 是什么

node.js - 如何使用 Sequelizejs 一起解决多个查询

node.js - ember/npm 插件,带有依赖项/devDependencies

xml - Chrome 中的默认 XML 样式表?

javascript - 手机上的谷歌地图 rtl 提供水平滚动

Python - Selenium PhantomJS - JSON 错误

python - Selenium Python Ubuntu-导入http.client AttributeError

javascript - NodeJS : Comparing each element of an array with all other elements with an async process?

node.js - 如何发出将数组发送到服务器的请求?

javascript - 用户允许获取 Chrome 浏览器通知后如何刷新或重定向用户?