angularjs – 有没有办法优化/加快数据发送到用量角器的UI?
我有类似的代码:
ExamPage.prototype.enterDetailsInputData = function (modifier) { page.sendKeys(this.modalExamName,'Test Exam ' + modifier); page.sendKeys(this.modalExamVersionId,'Test exam version ' + modifier); page.sendKeys(this.modalExamProductVersionId,'Test exam product version ' + modifier); page.sendKeys(this.modalExamAudienceId,'Test exam audience ' + modifier); page.sendKeys(this.modalExamPublishedId,'2014-06-1' + modifier); page.sendKeys(this.modalExamPriceId,'100' + modifier); page.sendKeys(this.modalExamDurationId,'6' + modifier); }; 这是page.sendKeys函数.请注意,目前这还没有做任何回报承诺或任何类似的事情.如果函数编码不好,那么我欢迎评论: // page.sendkeys function sendKeys(id: string,text: string) { element(by.id(id)).sendKeys(text); } 我看着它缓慢地填满了我屏幕上的每个字段,然后重复一遍又一遍地进行了更多的测试. 有没有什么办法可以进行优化,还是等待一个领域,另一个填补,并且需要经受长时间运行的测试? 我假设sendKeys是基于承诺的.我可以例如使用AngularJS $q同时发出所有的sendKey,然后使用$q来等待他们完成?
潜在的解决方案我认为至少有一点黑客需要,无论你如何优化它 – 量角器不给你这个开箱即用.然而,这样的小帮手功能是否适合您的需要?您还需要加快文字输入与ng模型的加速?
function setNgModelToString(element,value) { return element.getAttribute('ng-model').then(function (ngModel) { element.evaluate('$eval("' + ngModel + ' = '' + value + ''") && $digest()'); }); } 解决方案示例: describe('angularjs homepage',function() { it('should have a title',function() { browser.get('http://juliemr.github.io/protractor-demo/'); var inputString1 = ''; var inputString2 = ''; for (var i = 0; i < 1000; i++) { inputString1 += '1'; inputString2 += '2'; } /* Uncomment this to see it runs much much slower when you enter each key. */ //element(by.model('second')).sendKeys(inputString1); setNgModelToString(element(by.model('second')),inputString2); expect(element(by.model('second')).getAttribute('value')).toEqual(inputString2); }); }); 为什么解决方案可行? 您需要使用$eval来包装作业,而不仅仅是赋值,因为评估不会评估副作用(一个嵌套的评估,虽然… heh).假设在角度表达式中是真实的,那么$digest()从& amp ;;这会导致摘要发生,您需要更新所有内容,因为您从摘要循环之外设置值. 关于解决方案的想法: E2E测试背后的整个想法是使用您的应用程序“模拟”最终用户.这可能不会这样做,也可以一个一个地发送密钥,也可以复制粘贴(因为粘贴到元素中是输入输入的有效方式;因为闪存等而难以设置),见下文). 其他潜在解决方案: >复制和粘贴:创建一个元素,输入文本,复制它,将发送Ctrl V的文本粘贴到目标元素.这可能需要做一些花哨的步法,例如使用Flash(暴露系统剪贴板是一个安全风险),并且“复制”点击一个看不见的Flash播放器.请参阅 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |