【问题标题】:Using the Page Object Model is it better practice to return a promise or to use async/await in the function when the function does not return a value使用页面对象模型是更好的做法是返回一个承诺或在函数不返回值时在函数中使用 async/await
【发布时间】:2019-07-08 15:35:31
【问题描述】:

希望就在这种情况下的最佳做法获得一些反馈 (量角器测试框架使用带有 async/await 而非 SELENIUM_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 只使用一次,但是从我只需要设置一个值而不需要返回任何东西的函数返回任何东西似乎是错误的。

【问题讨论】:

    标签: selenium-webdriver async-await protractor pageobjects


    【解决方案1】:

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

    所以,每个人都会明白,使用它的功能需要解决一个承诺。 此外,如果您的方法需要等待两个或更多操作,那么您必须将您的函数设为async

    【讨论】:

    • 同意。如果函数中发生多个操作,则选项 2 将不起作用,您最终会遇到混合约定。
    • 好吧,这对我来说也很有意义。感谢您的反馈
    猜你喜欢
    • 2021-11-27
    • 2017-12-07
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多