量角器在赋值变量时抛出错误

Protractor Throws Error on Assigning Variable

本文关键字:出错 错误 变量 赋值 量角器      更新时间:2023-09-26
var itemStatus =  element(by.model('item.statusId')).getText();

这会导致量角器抛出:

未捕获异常:等待量角器同步时出错页面:"Angular无法在窗口中找到"进程退出错误码1.

有人能解释一下吗?这不会抛出:

var itemStatus = element(by.model('item.statusId'))

是否与承诺有关,它不能执行.getText(),直到元素被定位?

我想我对这里的基本知识理解得很差。

更新:

var itemStatus = element(by.model('item.statusId'))
// var itemStatus =  element(by.model('item.statusId')).getText(); //was throwing with this

然后在下面使用,在代码被注释掉之前,我只是没有在期望中运行"。gettext()"。

it('Should check item status, verify it is Checked Out.', function(){
    expect(itemStatus.getText()).toBe('Checked Out');
    //expect(itemStatus).toBe('Checked Out'); //this is how it was during error
}); 

和html:

<div class="form-control ng-binding ng-scope ng-isolate-scope ng-valid" ng-model="item.statusId" disabled="disabled">Checked In</div>

我要注意的是,即使注释掉了所有的expect语句,当我试图为var itemStatus执行getText()时,脚本仍会抛出错误。

对不起,忘了配置:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['transfer_spec.js']  
}

我认为这与您在哪里定义itemStatus变量有关。如果它被定义在describe/it的范围之外,你可能会陷入量角器和angular之间的同步问题——在getText()被调用的那一刻,它还为时过早,protractor还没有收到angular的"我准备好了"信号。是否在describe/it或Page Object中进行声明:

var MyPage = function () {
    this.status = element(by.model('item.statusId'));
};
module.exports = new MyPage();

用法:

var myPage = require("MyPage.js")
describe("My test", function () {
    it("Should check item status, verify it is Checked Out.", function () {
         expect(myPage.status.getText()).toEqual("Checked Out");
    });
});

相关文章: