gpt4 book ai didi

angularjs - Protractor 等待 isElementPresent 并单击等待的元素失败

转载 作者:行者123 更新时间:2023-12-02 23:51:20 25 4
gpt4 key购买 nike

我的 end2end 测试有问题。有时他们会毫无问题地通过,但三分之二的时间他们会失败。我使用 Protractor 和以下代码:

 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>

我收到的错误:

E2E: Admin dashboard delete Exports create export Message: NoSuchElementError: No element found using locator: By.id("export")

最佳答案

我发现问题在于:element isPresent()isDisplayed()

所以如果你只等待 isPresent() 它可以在 html 中找到但尚未显示。

如果您只想使用elm.isDisplayed(),则很棘手,如果元素尚不存在,它将崩溃。所以你必须先检查 isPresent() 在 isDisplayed()

之前

我创建了一个等待 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 () {
it('create export', function () {
browser.get(e2GUrl + '/admin/studies');
waitUntilReady(element(by.id('export')));
element(by.id('export')).click();
});

关于angularjs - Protractor 等待 isElementPresent 并单击等待的元素失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28025342/

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