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

How to disable custom protocol handler for protractor?

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

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

我的量角器配置如下:

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

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

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 docker 容器中创建一个名为“/chrome-profile”的文件夹,并在其中添加一个名为 "Default State" 的文件,其中包含以下内容内容:

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

然后,设置 Chrome 用户数据目录标志:

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