gpt4 book ai didi

angularjs - 异步测试不适用于 Protractor

转载 作者:行者123 更新时间:2023-12-03 06:49:32 25 4
gpt4 key购买 nike

我正在尝试调用 done() 进行异步测试,但这不起作用,我收到“未定义不是函数”错误。

describe('Login screen tests', function () {
var ptor = protractor.getInstance();
beforeEach(function(){
console.log('In before Each method');
ptor.get('http://staging-machine/login/#/');
});

it('Blank Username & Password test', function(done) {
ptor.findElement(protractor.By.id("submit")).click();
var message = ptor.findElement(protractor.By.repeater('message in messages'));
message.then(function(message){
message.getText().then(function(text) {
console.log("Message shown:"+text);
expect(message.getText()).toContain('Username or Password can\'t be blank');
done();
});
});
});
});

我尝试用谷歌搜索,发现 Jasmine 可能存在一些问题,但我仍然无法解决这个问题。因为这个错误似乎真的出乎意料。任何帮助将不胜感激。

最佳答案

您确定在 done() 行中得到 undefined is not a function 吗?

我认为你的问题在这里: ptor.findElement(protractor.By.repeater('message in messages')) 因为那时你显然位于 Angular 页面上,所以,关于 webdriver 的 findElement中继器:你不应该这样做。

无论如何,我会做两件事:

  1. 将 Protractor 升级到最新版本
  2. 像下面这样重写整个测试,因为根本不需要在这里调用 done()

重写:

describe('Login screen tests', function () {
// Page Objects. TODO: Extract to separate module file.
var submitBtnElm = $('#submit');
var messagesRepElms = element.all(by.repeater('message in messages'));

describe('Blank Username & Password test', function() {
// Moved login get out of beforeEach since you need to get it once
it('Opens an Angular login page', function() {
browser.get('http://staging-machine/login/#/');
});

it('Clicks submit btn without entering required fields', function() {
submitBtnElm.click();
});

it('Should trigger validation errors', function() {
expect(messagesRepElms.first().isPresent()).toBeTruthy();
expect(messagesRepElms.first().getText()).
toContain('Username or Password can\'t be blank');
});
});
});

关于angularjs - 异步测试不适用于 Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22710229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com