angularjs – 量角器等待isElementPresent并单击等待元素失败
发布时间:2020-12-17 08:33:40 所属栏目:安全 来源:网络整理
导读:我的end2end测试有问题.有时他们通过没有任何问题,但三分之二的时间他们失败.我使用以下代码的量角器: describe('Admin dashboard delete Exports',function () { it('create export',function () { browser.get(e2GUrl + '/admin/studies'); ptor.wait(fun
我的end2end测试有问题.有时他们通过没有任何问题,但三分之二的时间他们失败.我使用以下代码的量角器:
describe('Admin dashboard delete Exports',function () { it('create export',function () { browser.get(e2GUrl + '/admin/studies'); ptor.wait(function() { return ptor.isElementPresent(by.id('export')); },5000,'wait for study list page to be loaded.'); element(by.id('export')).click(); }); HTML(请注意,此元素是可见的,不会被ng-if或ng-show隐藏): <ul> <li data-ng-repeat="study in studies"> <div data-ng-controller="ExportController" class="btn-group"> <a id="export" class="btn btn-small dropdown-toggle" data-toggle="dropdown" href="#"> <i class="fw-icon fw-icon-cloud-download"></i>Export <span class="caret"></span> </a> <ul class="dropdown-menu export-list"> <li class="excel"><a data-ng-click="excel(study.Code)">Export to Excel</a> </li> </ul> </div> </li> </ul> 我收到错误:
我发现问题在于:
元素isPresent()和isDisplayed() 因此,如果您只等待isPresent(),它可以在html中找到但尚未显示. 如果你只是想使用elm.isDisplayed(),那么它将会崩溃,如果该元素尚不存在,它将会崩溃.所以你必须先检查isDisplayed()之前是isPresent() 我创建了一个等待阻塞2个属性的函数: this.waitUntilReady = function (elm) { browser.wait(function () { return elm.isPresent(); },10000); browser.wait(function () { return elm.isDisplayed(); },10000); }; describe('Admin dashboard delete Exports',function () { browser.get(e2GUrl + '/admin/studies'); waitUntilReady(element(by.id('export'))); element(by.id('export')).click(); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |