javascript - 等待带有定位器的元素时超时

标签 javascript angular typescript protractor e2e-testing

我正在尝试测试以下代码:

<div name="userElem" *ngFor="let user of users ; let i=index">
    <div class="list-group-item" id="user-{{i}}" (click)='selectUser(user)' [style.backgroundColor]="user?._id==selectedUser?._id ? '#F0F0EE' : 'white'">
        <div *ngIf="user?._id==selectedUser?._id">      
            <div class="pull-right">        
                <a  id="delete-user-{{i}}" (click)="deleteUser(user._id)">  
                    <i class="fa fa-trash fa-fw"></i>
                </a>
                <a  (click)="editUser(user._id)">
                   <i class="fa fa-pencil fa-fw"></i>
                </a>
                <a [routerLink]="['/edit',user._id]" name="userLink-{{i}}">
                    <i class="fa fa-eye fa-fw"></i>
                 </a>
             </div>
          </div>
        </div>
    </div>

通过使用以下 E2E 测试用例:

it('should delete a user', () => {
    page.navigateToUserComponent();  
    let selectUserElem = element(by.id('user-0')).click();   //this event is fired as I can see user getting selected.    
    let deleteUserElem = element(by.id('delete-user-0'));    
    browser.wait(function() {
        return browser.isElementPresent(by.id('delete-user-0'));
    }, 5000);
    expect(deleteUserElem.isPresent()).toBeTruthy();  // if element is present I want to click that element .i.e. delete the first user in array
  });

但到目前为止还没有取得任何成功。

我尝试了此链接中讨论的多种方法:

StackOverflow Post

但无法使其工作。 有什么帮助吗?

谢谢

最佳答案

如果您想识别第一个delete_user元素,您可以使用以下xpath。

let deleteUserElem = element.all(by.xpath(".//a[contains(@id, 'delete-user-')]")).first();

然后您可以将其与 Protractor 预期条件结合起来,等待所需的 Web 元素出现。

EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(deleteUserElem),20000, 'element is not visible within the time specified');

关于javascript - 等待带有定位器的元素时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40647576/

相关文章:

javascript - 使用 lodash 或 ramda 转换对象数组

javascript - Nodeclipse的CPU利用率很高

html - Angular:如何通过 HTML 而不是 CSS 传递背景图片 URL?

javascript - 使用 svg 渲染图像标签时,使用 enzyme 进行 react 组件单元测试失败

javascript - jQuery 函数未在另一个函数之前执行

javascript - 基于外部数组Knockout JS的计算属性

javascript - Angular 4 : Build to prod: Property is private and only accessible within class

javascript - Angular 生产版本不能缩短类名吗?

angular - Ionic 3 工具栏按钮不会从轮廓变为实心

typescript - 如何在 Jest 测试文件中使用从 typescript 文件导入模块