0

我有一个问题,我需要在我的 e2e 测试中使用 Protractor 模拟慢速网络。我正在使用 anuglar-cli 和 angular5。

我试图找到一种方法来模拟慢速网络但没有成功,使用setNetworkConnection但它无法工作并引发异常。

问题仅在慢速网络上,我的 typeahead 正在创建一个额外的调用,因为之前的调用尚未完成,我正在使用此函数来执行此操作:

this.modelChanged
    .debounceTime(400)
    .distinctUntilChanged()
    .subscribe((model: FilterModel) => {
        this.filters.set(model.filterName, model.filterVal);
        const filters = {};
        this.filters.forEach((value: any, key: string) => {
            filters[key] = value;
        });
        this.ds.changeData({
            filters: filters
        });
    });

也许您也会有更好的建议来解决它。很乐意接受任何建议。

现在我需要测试它,以防止回归,何时我会用更好的解决方案修复它。

提前致谢。

4

2 回答 2

2

如果您使用 Chrome,请查看此页面https://peter.sh/experiments/chromium-command-line-switches/

当您启动浏览器时,您可以将参数传递给它以指定所需的行为。特别注意这些参数:

--shill-stub- '蜂窝 = 1' - 蜂窝网络最初连接 '蜂窝 = LTE' - 蜂窝网络最初连接

--enabled-3g

--force-effective-connection-type

************* 编辑 *************

您在配置文件中指定 args。它应该具有如下所示的功能对象

capabilities: {
        "browserName": "chrome",
        "chromeOptions": {
            "args": ["incognito", "--window-size=1920,1080", "disable-extensions", "--no-sandbox", "start-maximized", "--test-type=browser"],
            "prefs": {
                "download": {
                    "prompt_for_download": false,
                    "directory_upgrade": true,
                    "default_directory": path.join(process.cwd(), "__test__reports/downloads")
                    }
                }
        }
    },

并且args是您要传递参数的内容

于 2018-11-07T20:00:58.453 回答
2

我用那个。添加到量角器的 config.ts 文件中:

    function enableThrottling(flag: boolean) {
  if(flag){
    if (typeof (browser.driver as any).setNetworkConditions === 'function') {
      console.log('set network conditions ON');
      (browser.driver as any).setNetworkConditions({
        offline: false,
        latency: 150,
        download_throughput: 450 * 1024,
        upload_throughput: 150 * 1024
      });
    }
  }
  else {console.log('set network conditions OFF')}
}

然后您可以在测试期间启用/禁用它enableThrottling(true)

延迟/下载/上传的值可以更改为:

/*GPRS (50 * 1024)/(20 * 1024)/500 ms
Regular 2G (250 * 1024)/(50 * 1024)/300 ms
Good 2G (450 * 1024)/(150 * 1024)/150 ms
Regular 3G (750 * 1024)/(250 * 1024)/100 ms
Good 3G (1.5 * 1024 * 1024)/(750 * 1024)/40 ms
Regular 4G (4 * 1024 * 1024)/(3 * 1024 * 1024)/20 ms
DSL (2 * 1024 * 1024)/(1 * 1024 * 1024)/5 ms
Wifi (30 * 1024 * 1024)/(15 * 1024 * 1024)/2 ms */

因此,例如,现在在上面的示例中,它设置为Good 2G

于 2018-11-14T09:51:59.950 回答