使用页面对象模型更好的做法是在函数未返回值时返回promise或在函数中使用async / await

问题描述 投票:3回答:1

希望得到一些关于这种情况下最佳实践的反馈(使用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然后我声明等待两次(在func和调用时),这似乎是不必要的,但函数表现得更符合我的预期。如果我使用选项2然后await只使用一次但是从函数返回任何东西似乎是错误的,我只需要设置一个值而不返回任何东西。

selenium-webdriver async-await protractor pageobjects
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.