Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多电容和茉莉花聚焦测试_Javascript_Selenium_Testing_Jasmine_Protractor - Fatal编程技术网

Javascript 多电容和茉莉花聚焦测试

Javascript 多电容和茉莉花聚焦测试,javascript,selenium,testing,jasmine,protractor,Javascript,Selenium,Testing,Jasmine,Protractor,故事: 我们有一个相当大的端到端量角器测试代码库。我们有两个配置-一个是“本地”-使用directConnect在Chrome和Firefox中运行测试,另一个是“远程”-在我们的例子中,在远程selenium服务器BrowserStack上运行测试 我们的“本地”配置被配置为在Chrome和Firefox中运行一些测试,因为我们确实无法在Chrome中运行一些测试,例如。在链接的chromedriver问题得到解决之前,运行需要在Firefox中使用键盘快捷键的测试是一个解决办法 以下是配置的

故事:

我们有一个相当大的端到端量角器测试代码库。我们有两个配置-一个是“本地”-使用
directConnect
在Chrome和Firefox中运行测试,另一个是“远程”-在我们的例子中,在远程selenium服务器BrowserStack上运行测试

我们的“本地”配置被配置为在Chrome和Firefox中运行一些测试,因为我们确实无法在Chrome中运行一些测试,例如。在链接的
chromedriver
问题得到解决之前,运行需要在Firefox中使用键盘快捷键的测试是一个解决办法

以下是配置的相关部分:

var firefox_only_specs = [
    "../specs/some_spec1.js",
    "../specs/some_spec2.js",
    "../specs/some_spec3.js"
];

exports.config = {
    directConnect: true,

    multiCapabilities: [
        {
            browserName: "chrome",
            chromeOptions: {
                args: ["incognito", "disable-extensions", "start-maximized"]
            },
            specs: [
                "../specs/**/*.spec.js",
                "../specs/**/**/*.spec.js",
                "../specs/**/**/**/*.spec.js"
            ],
            exclude: firefox_only_specs
        },
        {
            browserName: "firefox",
            specs: firefox_only_specs
        }
    ],

    // ...
};
问题:

现在的问题是,如果我正在调试一个测试,或者想要运行一个测试-我会将它标记为重点测试(通过
fdescribe
/
fit
),但量角器会启动两个驱动程序会话-一个用于Chrome,另一个用于Firefox,使用两种配置的功能:

Running "protractor:local" (protractor) task
[launcher] Running 2 instances of WebDriver

...
------------------------------------
[chrome #1] PID: 2329
[chrome #1] Using ChromeDriver directly...
[chrome #1] Spec started

...

------------------------------------
[firefox #2] PID: 2330
[firefox #2] Using FirefoxDriver directly...
[firefox #2] Spec started

...

问题:

有没有办法告诉量角器只使用一个配置了聚焦规范的功能


使用当前最新的
量角器
3.0.0


希望问题清楚。如果您需要任何其他信息,请告诉我。

我想知道您是否可以做些什么来包装
it
语句,例如:

onPrepare: function() {
    browser.getCapabilities().then(function(caps) {
        global.browserName = caps.caps_.browserName;
    });

    global.firefoxOnly = function(name, testFunction) {
        if (browserName === 'firefox') {
            return it(name, testFunction);
        } else {
            return xit(name, testFunction).pend('firefox only');
        }
    };
}
然后,在编写测试时,不要使用
it
,而是使用以下内容:

describe('when I do something', function() {
    firefoxOnly('it should do the right thing', function() {
        doSomething();
        expect(thing).toBe(right);
    )};
});
我不知道这是否真的有效,只是把它扔出去。事实上,当我回到我的测试计算机并试用它时,我会有兴趣添加一个像
wip
这样的函数来代替
xit
来自动挂起我的ATDD测试

有没有办法告诉量角器只使用一个配置了聚焦规范的功能


根据调查,这是不可能的。

你的问题没有答案,但在我看来……你不可能。在开始执行测试之前读取配置,以便启动
multiCapabilities
中的所有浏览器。一个痛苦的解决方法是更改“运行程序”或执行脚本以具有不同的配置,或者根据命令行参数动态设置配置。ie。它没有使用工具/框架的内置功能,但您可以使用不带Chrome设置的diff配置来执行。@aneroid谢谢您。是的,如何解决这个问题还不太清楚..可能我们必须有一个单独的自定义命令行参数,根据值,运行其中一个或全部功能。请记住,如果需要,您可以在
dragrator.conf.js
中使用
getMultiCapabilities
函数动态生成功能。最后,我找到了一种覆盖功能的方法,以防启用任何焦点测试(选择浏览器的逻辑稍微复杂一些,因为我的大多数测试都位于以要运行的浏览器命名的适当文件夹中)。@aneroid我同意,这看起来像是一个计时问题。当jasmine实际运行时,功能已经形成。找不到一个点,在这里我可以拥有我所需要的一切,不运行特定的功能,没有集中测试,只运行在
规范中有集中测试的功能。谢谢,说得好。