selenium-webdriver - 当函数没有返回值时,使用页面对象模型返回 promise 或在函数中使用 async/await 是更好的做法

标签 selenium-webdriver async-await protractor pageobjects

希望得到一些关于在这种情况下什么是最佳实践的反馈
( Protractor 测试框架使用带有 async/await 的页面对象模型而不是 SEELENIUM_PROMISE_MANAGER)。

假设我有一个名为 setUsername 的函数它只是在字段中设置用户名。我想知道使用 async/await 等待函数本身中的操作或返回操作是更好的做法。无论哪种方式,无论何时调用该函数都需要等待。

选项 1

this.setUsername = async function (username) {
    await usernameInput.sendKeys(username);
}

选项 2
this.setUsername = function (username) {
    return usernameInput.sendKeys(username);
}

调用任一选项的语法
await loginPO.setUsername('admin');

推理:如果我选择 option1,那么我将声明 await 两次(在 func 和调用时),这似乎是不必要的,但该函数的行为更符合我的预期。如果我选择选项 2,那么 await 只使用一次,但从我只需要设置一个值而不返回任何内容的函数中返回任何内容似乎是错误的。

最佳答案

在我看来最好使用 选项 1 ,您将在其中明确显示您的函数是 async因为有一些需要等待的 Action 。

所以,每个人都会明白,使用它需要函数来解决一个 promise 。
此外,如果您的方法有两个或更多需要等待的操作,那么您必须使您的函数 async .

关于selenium-webdriver - 当函数没有返回值时,使用页面对象模型返回 promise 或在函数中使用 async/await 是更好的做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54693279/

相关文章:

Javascript错误 : javascript error: document unloaded while waiting for result

javascript - 是否可以在同一场景中有条件地运行 cucumber 步骤?

python - Selenium 很慢,还是我的代码有误?

c# - 如何将任务添加到 Task.WhenAll 正在等待的集合中?

f# - F# 中的异步计算

AngularJS - e2e 测试 - 为什么这个 by.css 选择器有效?

selenium - Microsoft Edge 清理 session

selenium-webdriver - 使用 Protractor 从表中收集数据的最有效方法是什么?

java - 如何简化 testng XML 文件中的参数传递?

c# - 异步/等待在控制台应用程序中不起作用