如何等待量角器中的自定义函数执行?在量角器中实现自定义方法

时间:2019-02-18 13:39:55

标签: javascript angular protractor

我在量角器中编写了一个自定义方法,但是在调用它时,首先执行console.logs,然后执行函数体。方法不是以同步方式执行的。同样,在方法主体起作用之前,将执行方法调用之后的日志。

任何人都可以展示一个简单示例来以正确的方式调用自定义方法吗?

我的方法简单地返回通过UI通过自动化添加的学生的姓名。学生姓名是随机生成的。

尝试使用.then(),但显示错误,则不是功能,然后尝试推迟但不起作用

2 个答案:

答案 0 :(得分:0)

您可以尝试使用异步等待,https://javascript.info/async-await

我使用如下代码。它可能不符合其他标准/最佳实践,但对我有用。

public async testInputField(){
    await this.navigateToPage();
    await console.log('Setting username to foo.')
    await this.setInputFieldText(userNameInputBox, 'foo');
    await console.log('pressing apply')
    await this.clickApplyButton();
    await this.verifyInputFieldSet(userNameInputBox);
}

答案 1 :(得分:0)

量角器是异步工作的,因此您需要使用promise或async / await。

由于节点版本高于8,因此支持异步/唤醒;如Geaney上面给出的示例一样,最好总是使用它们。

另一种解决方法是承诺,

element(by.css('#id')).isPresent()).then(function(){
  console.log('This console will print only after the element is present');
});