当前位置: 首页 > 面试题库 >

承诺配置多种功能

乔鸿骞
2023-03-14
问题内容

这是“ 用量角器设置Firefox轮廓”主题的后续。

根据setFirefoxProfilehowto,可以使用特殊的“ helper”
js代码
设置firefox配置文件,该代码使用firefox- profileq库来动态制作编码的firefox配置文件。

这对我一直有效,直到我尝试
使用多个浏览器并进行配置multiCapabilities

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',

    multiCapabilities: [
        {
            browserName: 'chrome',
            specs: [
                'footer.disabledCookies.spec.js'
            ],
            chromeOptions: {
                prefs: {
                    'profile.default_content_settings.cookies': 2
                }
            }
        },

        ...
        // other capabilities here
        ...

        helper.getFirefoxProfile()    
     },

     ...
}

通过此设置,我遇到了一个错误(此处完整回溯):

规范模式与任何文件都不匹配。

据我了解,这意味着使用firefox配置文件的设置缺少specs密钥。换句话说,它找不到要运行的测试。

我试图将其包含在助手自身specscapabilities字典中,但是错误仍然存​​在。

如果使用,如何解决错误并设置Firefox配置文件multiCapabilities

解决方法是,我创建了一个单独的量角器配置文件,仅配置了firefox(使用capabilities),并设置grunt为运行量角器两次-一个用于此“带有配置文件的Firefox”配置,另一个用于所有其他浏览器。


问题答案:

现在,如果我们不使用多功能,则量角器只能接受promise作为功能。这样做的原因是因为multiCapabilities在新流程中运行每个任务,所以不能传递promise(功能)(单个功能起作用是因为我们没有分叉)。

或者,我们可以在启动器中解析功能,然后再将解析的功能传递到新流程中。但是,这将破坏设置代理(https://github.com/angular/protractor/pull/1040)的能力,这依赖于在driverProvider设置后解决的功能承诺。

我想不出一种简单的方法(无需大量重构),但这绝对是可行的。我为量角器(https://github.com/angular/protractor/issues/1594)创建了一个问题。如果您需要此功能,或者您有其他实现此想法的方法,请遵循该说明和/或对此进行评论。

现在,您需要使用原始问题中提到的解决方法。

更新

https://github.com/angular/protractor/pull/1629支持这一点。从量角器1.6开始(或者如果您同步至母版),您可以传入config.getMultiCapabilities喜欢onPrepare和的函数onCleanup。此函数可以返回一个承诺给multiCapabilties(即的数组capabilities)。

有关示例,请参见https://github.com/angular/protractor/blob/master/spec/getCapabilitiesConf.js。



 类似资料:
  • 问题内容: 在Angulardocs中,它提到您可以将“超时”配置设置为数字或承诺。 超时 – {number | Promise} –超时(以毫秒为单位),或承诺应在解决后中止请求。 但是我不确定如何使用诺言使这项工作成为现实。我如何设定数字和承诺?基本上,我希望能够知道http调用(承诺)是否由于“超时”或其他原因而出错。我需要能够分辨出差异。谢谢你的帮助 !!! 问题答案: 此代码来自$ht

  • 问题内容: 关于这两个重要来源:NZakas- 承诺链中的归还承诺 和MDN承诺,我想提出以下问题: 每次我们从承诺履行处理程序返回值时,该值如何传递给从同一处理程序返回的新承诺? 例如, 在这个例子中,是一个承诺。也是来自履行处理程序的承诺。但是。取而代之的是神奇地解决(如何?),然后将该值传递给的实现处理程序。即使是这里的句子也令人困惑。 您能给我解释一下这到底是怎么回事吗?我对这个概念感到困

  • 问题内容: 我必须做一个序列的承诺:我一次只有1个网址,这意味着只有1个诺言。每次我收到一个json时,其中一个都包含另一个json的网址,因此我必须做出另一个承诺。 我可以处理多个诺言,但是在这种情况下,我做不到,因为我没有所有的URL,只有一个。 这个例子不起作用,全部冻结。 问题答案: 您可以使用递归

  • 本文向大家介绍JavaScript 异步功能与承诺相比,包括了JavaScript 异步功能与承诺相比的使用技巧和注意事项,需要的朋友参考一下 示例 async功能不能代替Promise类型;他们添加了使承诺更容易调用的语言关键字。它们是可互换的: 使用承诺链的任何函数都可以使用重写await: 可以使用async/重写该函数await,如下所示: 的这种async变体newUnicorn()似乎

  • 问题内容: AngularJS文档说: $ qpromise由模板引擎以角度识别,这意味着在模板中,您可以将附加到作用域的promise视为它们的结果值。 所以有人可以解释一下这种提琴无法正常工作的原因吗?不可能更改文本字段的值。但是分配保证$http服务返回作用域字段的工作就像一个超级按钮。 控制器: HTML: 问题答案: 您需要在promise对象上使用then()函数: 就您而言,我认为您

  • Promises是一种在JavaScript中实现异步编程的简洁方法(ES6新功能)。 在承诺之前,Callbacks用于实现异步编程。 让我们首先了解异步编程及其实现,使用Callbacks。 了解回调 函数可以作为参数传递给另一个函数。 这种机制被称为Callback 。 回调对事件有帮助。 以下示例将帮助我们更好地理解这一概念。 <script> function notifyA