量角器等待元素

时间:2014-04-10 21:29:24

标签: javascript angularjs protractor

我一直在查看量角器的文档,我希望能够通过任何类型的选择器选择一个数组,并获取第一个的文本值并断言它。无论我尝试使用量角器,当我尝试使用getText()和get()时都会超时。

这就是我所看到的。 Reference

这是我的代码:

describe('E2E: Global Scan', function () {

    beforeEach(function () {
        browser.get('#/dashboard/global-scan');
    });

    it('should grab all a tags within li tags', function () {

        element.all(by.css('li a')).then(function(items) {
            expect(items.length).toBeDefined()
            expect(items[0].getText()).toBeDefined();
        });

        var list = element.all(by.css('li a'));
        expect(list.length).toBeDefined()
        expect(list.get(0).getText()).toBeDefined();

    });

});

正如您所看到的,我尝试使用然后承诺函数并将element.all的结果保存到变量并循环执行。这也不起作用。发生的事情是测试只是超时。

  

故障:

     

1)E2E:全局扫描应该抓取li标签内的所有标签消息:        错误:等待Protractor在10秒后与页面同步超时。请参阅   https://github.com/angular/protractor/blob/master/docs/faq.md

如果我尝试开始给我回复的browser.element。但是当我使用get或getText()时它仍然会中断。

有没有人有任何想法?做文档所说的并不实际有用。我有一个非常旧版的量角器吗?

2 个答案:

答案 0 :(得分:1)

您可以通过设置量角器配置来增加它

allScriptsTimeout: timeout_in_millis

有关详细信息,请参阅the https://github.com/angular/protractor/blob/master/docs/timeouts.md等待页面同步主题。

答案 1 :(得分:0)

在为Angular Project进行端到端时,我遇到了同样的问题。 最后,我配置了protractor.conf.js文件和spec.e2e.ts来摆脱“超时等待元素” “。

protractor.conf.js

const { SpecReporter } = require('jasmine-spec-reporter')

exports.config = {
  allScriptsTimeout: 110000,
  getPageTimeout: 110000,
  specs: [
'./e2e/**/example.e2e-spec.ts',
  ],
  capabilities: {
browserName: 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:8123/',
  framework: 'jasmine',
  jasmineNodeOpts: {
 showTiming: true,
showColors: true,
includeStackTrace: false,
defaultTimeoutInterval: 600000
  },
  onPrepare () {
require('ts-node').register({
  project: 'e2e/tsconfig.e2e.json'
})
browser.driver.manage().deleteAllCookies();
browser.driver.manage().window().maximize();
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }
}

example.e2e-spec.ts

import { browser, by, protractor, element, promise, ElementFinder, ElementArrayFinder } from 'protractor';

describe('Test', () => {
var originalTimeout;

beforeEach(() => {
    originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 120000;
    browser.driver.sleep(3000);
});

afterEach(function () {
    jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
    browser.driver.sleep(5000);
});

it('It should display title and it should login also',() => {
    browser.ignoreSynchronization = true;
    browser.get('/',5000);
    expect(browser.getTitle()).toEqual('TitleExample');
});

});