这是“ 用量角器设置Firefox轮廓”主题的后续。
根据setFirefoxProfile
howto,可以使用特殊的“ helper”
js代码
设置firefox配置文件,该代码使用firefox- profile
和q
库来动态制作编码的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
密钥。换句话说,它找不到要运行的测试。
我试图将其包含在助手自身specs
的capabilities
字典中,但是错误仍然存在。
如果使用,如何解决错误并设置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