Selenium 量角器串行规范执行

Selenium 量角器串行规范执行,selenium,jasmine,protractor,angularjs-e2e,e2e-testing,Selenium,Jasmine,Protractor,Angularjs E2e,E2e Testing,在我的测试重构之后,我面临着一个奇怪的问题。为了显著减少执行时间,我不推荐使用beforeach/afterEach块,现在我连一个接一个运行简单规范都有问题。我已经创建了简单的配置和规范 配置: exports.config = { seleniumAddress: 'http://localhost:4444/wd/hub', specs: [ 'googleSpec.js', 'forgotPasswordPageTestSuite.js'

在我的测试重构之后,我面临着一个奇怪的问题。为了显著减少执行时间,我不推荐使用beforeach/afterEach块,现在我连一个接一个运行简单规范都有问题。我已经创建了简单的配置和规范

配置:

 exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: [
        'googleSpec.js',
        'forgotPasswordPageTestSuite.js'
        ],
    capabilities:
    {
        browserName: 'chrome'
        //shardTestFiles: true,
        //maxInstances: 2
    },
    jasmineNodeOpts: {
        defaultTimeoutInterval: 360000
    }
}
规范1:

describe("Google Spec", function()
{

    browser.ignoreSynchronization = true;
    browser.get('http://google.com');

    browser.wait(function () {
        return element(by.name('q')).isDisplayed();
    }, 15000);

    it('Verify search inout is presented', function()
    {
        expect(browser.isElementPresent(element(by.name('q'))).toBe(true);
    });
});
规范2:

describe("Yandex spec", function()
{
    browser.ignoreSynchronization = true;
    browser.get('http://www.yandex.ru');

    browser.wait(function () {
             return element(by.id('text')).isDisplayed();
        }, 15000);
    });

    it('Verify that search input is presented', function()
    {
        expect(browser.isElementPresent(by.id('text'))).toBe(true);
    });
});
如果我分别执行它们和使用

shardTestFiles: true,
maxInstances: 2
这还可以,但当我有上述配置时,我有这样的例外:

[launcher]正在运行WebDriver F的1个实例

失败:

1) Google Spec Verify search inout显示消息: 期望假为真。堆栈跟踪: 错误:预期失败 在[对象]。(/Users/sergeyteplyakov/webstormpprojects/e2eMPP20/googleSpec.js:13:54)

用6.339秒完成2次测试,2次断言,1次失败

[launcher]0个WebDriver实例仍在运行[launcher]chrome

1个失败的1个测试[launcher]总体:1个失败的规范[launcher]进程退出,错误代码为1 进程已完成,退出代码为1


在我的实际测试中,当我的规范与我提供的规范相似时,我也遇到了同样的问题。当我看到由于某种原因真正发生的事情时,在第一个规范完成之前,第二个规范中的get(url)方法开始执行。我想我遗漏了一些核心和重要的东西,有人能告诉我吗)

我认为在这种设置下,
量角器
不能保证执行
等待()
调用并等待结果,然后再执行
它()

如果您希望在规范中的所有
it
块之前执行某些代码,请使用
beforeAll()
(Jasmine 2中内置,可作为Jasmine 1.x的版本提供):

还请注意,您可以使用来简化
wait()
块:

var EC = protractor.ExpectedConditions;
var elm = element(by.name('q'));

browser.wait(EC.visibilityOf(elm), 15000);

我试着把所有的积木都包括进去,但都没有用。另外,在我的实际测试中,我只是在第一个“it”块之前的第二个套件中放入所有代码,然后再开始工作,这真是太棒了weird@SergeyTeplyakov谢谢,如果您移动
browser.ignoreSynchronization=true
onPrepare()
var EC = protractor.ExpectedConditions;
var elm = element(by.name('q'));

browser.wait(EC.visibilityOf(elm), 15000);