我一直在查看量角器的文档,我希望能够通过任何类型的选择器选择一个数组,并获取第一个的文本值并断言它。无论我尝试使用量角器,当我尝试使用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()时它仍然会中断。
有没有人有任何想法?做文档所说的并不实际有用。我有一个非常旧版的量角器吗?
答案 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');
});
});