量角器,我必须在量角器调用后使用 then() 吗?
Protractor, do I have to use then() after protractor calls?
可以这样写吗:
getFieldX().clear().sendKeys('abc');
或者我应该写:
getFieldX().clear().then( () => sendKeys('abc));
我对量角器中的 Promise 处理感到非常困惑。 clear()
returns 一个承诺,所以我应该在之后使用 .then()
,不是吗?
但我找到了带有 .then 和一些不带 .then 的示例。
量角器本身有一个没有 .then()
的例子:
https://www.protractortest.org/#/control-flow
Protractor 是否有自己的机制并一个接一个地解决 promise,因此不需要在 protractor 调用 returns Promise 后使用 .then()
?
量角器的控制流是否只在一个规范中有效?
在正常功能中使用 .sendKeys()
时,我必须使用 .sendKeys().then(...)
?
这完全取决于您是否使用 SELENIUM_PROMISE_MANAGER
。由于这是(已经?)被弃用,我不会使用它。默认情况下应将其设置为 false,但如果您想确保可以将 SELENIUM_PROMISE_MANAGER = false;
添加到您的 conf 文件中。量角器移动的方式是使用 async/await,因此您的 sendKeys 函数看起来像:
let field = element(by.css('CSS.Selector'));
await field.clear();
await field.sendKeys('abc');
因为这些是异步函数,您需要正确定义函数,所以基本规范如下:
describe('Demonstrating async/await',function(){
it('Should send some keys', async function(){
let field = element(by.css('CSS.Selector'));
await field.clear();
await field.sendKeys('abc');
});
});
重要的区别在于函数需要定义为 async function()
。就阅读代码而言,await
可以简单地读作 "Wait until promise resolved to move on"。它确实有点乏味,你觉得你在每一行代码之前都写了 await
(你基本上是这样做的),但我发现它比 .then()
树好得多。
可以这样写吗:
getFieldX().clear().sendKeys('abc');
或者我应该写:
getFieldX().clear().then( () => sendKeys('abc));
我对量角器中的 Promise 处理感到非常困惑。 clear()
returns 一个承诺,所以我应该在之后使用 .then()
,不是吗?
但我找到了带有 .then 和一些不带 .then 的示例。
量角器本身有一个没有 .then()
的例子:
https://www.protractortest.org/#/control-flow
Protractor 是否有自己的机制并一个接一个地解决 promise,因此不需要在 protractor 调用 returns Promise 后使用 .then()
?
量角器的控制流是否只在一个规范中有效?
在正常功能中使用 .sendKeys()
时,我必须使用 .sendKeys().then(...)
?
这完全取决于您是否使用 SELENIUM_PROMISE_MANAGER
。由于这是(已经?)被弃用,我不会使用它。默认情况下应将其设置为 false,但如果您想确保可以将 SELENIUM_PROMISE_MANAGER = false;
添加到您的 conf 文件中。量角器移动的方式是使用 async/await,因此您的 sendKeys 函数看起来像:
let field = element(by.css('CSS.Selector'));
await field.clear();
await field.sendKeys('abc');
因为这些是异步函数,您需要正确定义函数,所以基本规范如下:
describe('Demonstrating async/await',function(){
it('Should send some keys', async function(){
let field = element(by.css('CSS.Selector'));
await field.clear();
await field.sendKeys('abc');
});
});
重要的区别在于函数需要定义为 async function()
。就阅读代码而言,await
可以简单地读作 "Wait until promise resolved to move on"。它确实有点乏味,你觉得你在每一行代码之前都写了 await
(你基本上是这样做的),但我发现它比 .then()
树好得多。