ajax – 量角器 – $http调用后在转发器中选择元素
发布时间:2020-12-16 02:50:24 所属栏目:百科 来源:网络整理
导读:我开始对我的sails.js / AngularJS app进行量角器测试.简化,我的 HTML中有以下类型的ng-repeat: div ng-repeat="book in books" book.name/div 我的测试单击一个按钮,该按钮向服务器发送$http POST调用,创建另一本书,并在成功时将另一本书添加到$scope.book
我开始对我的sails.js / AngularJS app进行量角器测试.简化,我的
HTML中有以下类型的ng-repeat:
<div ng-repeat="book in books"> book.name </div> 我的测试单击一个按钮,该按钮向服务器发送$http POST调用,创建另一本书,并在成功时将另一本书添加到$scope.books.问题是测试失败,因为当测试检查它的存在时,还没有创建该书.我知道我的定位器/过滤器工作,因为再次运行测试(=在发送呼叫之前存在该书)测试成功. 测试: element.all(by.buttonText('Save')). filter(function(elem) {return elem.isDisplayed();}). first(). click(); browser.sleep(500); // even this doesn't work :( element.all(by.repeater('book in books')).filter(function(elem,index) { return elem.getText().then(function(text) { return text === "nameOfBook"; }); }) .then(function(books) { expect(books[0].isPresent()).toEqual(true); }); 到目前为止,我遇到的答案似乎表明量角器应该在继续之前自动等待$http调用完成,但在我的情况下它似乎并非如此. 我甚至尝试过4000毫秒左右的睡眠时间,我已经可以看到转发器中的新元素,但测试仍然看到书籍[0]未定义.再次运行测试时的工作原因所以问题不应该在过滤器中,而应该在其他地方. 有关此事的任何见解? 解决方法
您可以在07,000中将新书名称存在于DOM中:
var EC = protractor.ExpectedConditions; var elm = element(by.xpath("//div[. = 'nameOfBook']")); browser.wait(EC.presenceOf(elm),10000); 您还可以等待转发器中元素的数量增加: var countOfElementsToBe = function(elms,expectedValue) { return elms.count().then(function (actualValue) { return expectedValue === actualValue; }); }; var books = element.all(by.repeater('book in books')); books.count().then(function (booksCount) { browser.wait(countOfElementsToBe(books,booksCount + 1),10000); }); (未测试) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |