如何禁用量角器的自定义协议处理程序?

时间:2017-10-03 10:12:05

标签: selenium protractor selenium-chromedriver e2e-testing

我有一个用于应用程序的Protractor测试套件,该套件使用自定义协议处理程序将消息传递出iOS Web视图。

使用量角器测试时,如何防止自定义window.location = "app://doThing";消息破坏我的测试?它显示"打开xdg-open?"弹出窗口并没有继续进行测试。

我的量角器配置如下所示:

exports.config = {
  ...,
  multiCapabilities: [ {
    browserName: 'chrome',
    chromeOptions: { 
      args: [ '--lang=en', '--window-size=1024x768' ]
    },
    specs: 'test-*.js',
  } ]
};

1 个答案:

答案 0 :(得分:0)

我通过在chromeOptions块中设置首选项,在Chrome 60中实现了这一点。

exports.config = {
  ...,
  multiCapabilities: [ {
    browserName: 'chrome',
    chromeOptions: { 
      args: [ '--lang=en', '--window-size=1024x768' ],

      // Replace "app" with your app's custom scheme.
      prefs: { 
        protocol_handler: { 
          excluded_schemes: { 
            "app": true 
          } 
        } 
      },
    },
    specs: 'test-*.js',
  } ]
};

在Chrome 60之前,我为Chrome浏览器强制执行了个人资料文件夹。你可以通过一个名为" / chrome-profile"的文件夹来做到这一点。例如,在Chrome docker容器中添加一个名为"默认状态"的文件。具有以下内容:

{
    "protocol_handler": {
        "excluded_schemes": {
            "app": true
        }
    }
}

然后,设置Chrome user-data-dir标志:

exports.config = {
  ...,
  multiCapabilities: [{
     'browserName': 'chrome',
     'chromeOptions' : {
         args: ['--lang=en',
                '--window-size=1024,768',
                '--user-data-dir=/chrome-profile/']
       },
       specs: ['test-*.js']
   }]
};