Javascript 避免firefox量角器中多个测试文件中的一个测试

Javascript 避免firefox量角器中多个测试文件中的一个测试,javascript,angularjs,selenium,selenium-webdriver,protractor,Javascript,Angularjs,Selenium,Selenium Webdriver,Protractor,我的tests文件夹中有多个测试,其中所有测试的命名约定以spec.js结尾。我正在使用*/spec.js选项从配置文件运行所有测试 我想跳过在FF中运行一个测试,因为该浏览器不支持该测试。这就是我试图做的,但它并没有跳过测试。请告知 multiCapabilities: [{ 'browserName': 'chrome', 'chromeOptions' : { args: ['--window-size=900,900'] // } }, }, { 'br

我的tests文件夹中有多个测试,其中所有测试的命名约定以spec.js结尾。我正在使用*/spec.js选项从配置文件运行所有测试

我想跳过在FF中运行一个测试,因为该浏览器不支持该测试。这就是我试图做的,但它并没有跳过测试。请告知

multiCapabilities: [{
  'browserName': 'chrome',
  'chromeOptions' : {
    args: ['--window-size=900,900']
    // }
  },
},

{
  'browserName': 'firefox',
  'chromeOptions' : {
    args: ['--window-size=900,900']
    // }
  },
}],

specs: [
  '../tests/*.spec.js'
],
我的onPrepare函数中包含以下内容:

browser.getCapabilities().then(function (cap) {
    browser.browserName = cap.caps_.browserName;
});
在我希望跳过在FF中运行此测试的一个测试文件中,我正在这样做

if(browser.browserName=='firefox') { 
console.log("firefox cannot run *** tests")

} else { 

blah... rest of the tests which I want to execute for Chrome and IE I have put it in this block}
但我想在FF中跳过的测试仍然在运行


请告知。

一个简单的方法是使用
exclude
标记更新您的firefox
multicapabilities
以排除特定的测试规范。这将防止使用
if
条件和额外的代码行。这是怎么做的-

multiCapabilities: [{
  'browserName': 'chrome',
  'chromeOptions' : {
    args: ['--window-size=900,900']
    // }
  },
},

{
  'browserName': 'firefox',
  'chromeOptions' : {
    args: ['--window-size=900,900']
    // }
  },
}],

specs: [
  '../tests/*.spec.js'
],
multiCapabilities: [{
    browserName: 'chrome',
    chromeOptions : {
              args: ['--window-size=900,900']
                    }, 
    },
    {
    browserName: 'firefox',
    // Spec files to be excluded on this capability only.
    exclude: ['spec/doNotRunInChromeSpec.js'], //YOUR SPEC NAME THAT YOU WANT TO EXCLUDE/SKIP
    }],

希望有帮助。

只要
浏览器。getCapabilities()
是异步的,并且基于
中的代码。然后()
可能会比其他代码执行得晚。我猜如果将
条件置于
描述
块中,该块实际上在
浏览器的值之前运行。设置了browserName
,则会得到
未定义的
值,条件失败。为了确保测试在所有准备工作完成后运行,您应该从
onPrepare
返回一个承诺:

onPrepare: function() {
    return browser.getCapabilities().then(function (cap) {
        browser.browserName = cap.caps_.browserName;
    });
}
量角器将明确地等待,直到它解决,然后开始执行测试

describe('Suite', function () {

    console.log(browser.browserName);  // 'firefox'

    it('spec', function () {
        expect(true).toBe(true);
    });
});

非常感谢。。不知道exclude标记您知道2.4.0是否支持exclude标记吗?我升级了量角器版本,现在我的排除标记根本不起作用。我得到警告,你的规格图案与任何文件都不匹配message@user2744620它应该会起作用。从错误的外观来看,似乎您提供的文件路径或文件名不正确。你能核实一下吗?如果仍然正确,请在github页面中使用量角器打开问题。谢谢。不用了,在chrome上它会被执行。只有在FF中,它给了我错误。我会再检查一遍这确实是个错误。我降低了版本,现在它的工作。将创建一个票证。