Javascript 如何使用摩卡、柴和量角器睡眠10秒

Javascript 如何使用摩卡、柴和量角器睡眠10秒,javascript,protractor,mocha.js,chai,Javascript,Protractor,Mocha.js,Chai,因此,我一直对.sleep函数存在问题,它似乎跳过了sleep函数,原因是我需要使用用户名和密码手动登录(弹出窗口),手动输入后,我希望程序继续 基本上,它很简单: description('个人信息',函数()){ var EC=量角器。预期条件; 这是超时(50000); it('输入电子邮件')功能(完成){ sleep(10000).then(function(){ log('等待10秒'); }); browser.wait(EC.presenceOf)(piPage.enterEma

因此,我一直对.sleep函数存在问题,它似乎跳过了sleep函数,原因是我需要使用用户名和密码手动登录(弹出窗口),手动输入后,我希望程序继续

基本上,它很简单:

description('个人信息',函数()){
var EC=量角器。预期条件;
这是超时(50000);
it('输入电子邮件')功能(完成){
sleep(10000).then(function(){
log('等待10秒');
});
browser.wait(EC.presenceOf)(piPage.enterEmail()test@test.com')), 5000);
//enterEmail=元素(by.id('email');
});
});

基本上我想做的是,我想等待10秒,然后在这期间,它应该寻找元素,如果它还没有出现。一旦出现,则通过输入电子邮件等方式继续代码。但是,此代码此时会立即运行且永不休眠。

使用
异步功能

it('enter email', async function(done) {
    await browser.sleep(10000).then(function() {
        console.log('waited 10 seconds');
    });

    await browser.wait(EC.presenceOf(piPage.enterEmail('test@test.com')), 5000);
    //enterEmail = element(by.id('email'));
});

我发现有时需要调用selenium驱动程序实例本身的sleep,而不是congrator。因此,这需要使用
browser.driver
,而不是像这样使用
browser

browser.driver.sleep(10000).then(function() {
    console.log('waited 10 seconds');
});

我犯了一个非常奇怪的错误。出于某种原因,它会显示“(节点:16408)UnhandledPromisejectionWarning:TypeError:无法读取未定义的“但是我在任何地方都没有任何isPresent”的属性“isPresent”?啊,确实如此。我也在想办法。browser.wait(元素,10000)似乎也没有等待10000毫秒。这是否也是您遇到的问题?您需要在浏览器中使用预期条件或类似功能。等等,不是元素本身。它通过不断检查函数在给定的时间内是否返回true来工作,如果不是,则抛出异常。如果在跳过命令时遇到一般问题,请检查配置中是否设置了
SELENIUM\u PROMISE\u MANAGER:false
。如果是(或者您使用的是量角器v6+),那么您需要为所有这些命令使用
async/await
语法。对了,我使用了
示例。然后(()=>browser.wait(checkoutPage.getPageTitle(),5000))
这实际上不应该工作吗?这不工作,因为
checkoutPage.getPageTitle()
将在每次返回值时通过检查,您将需要某种形式的预期条件,如我在第一个答案中所述。我想你需要研究一下如何更好地理解这一点。对,我想我得到了浏览器。等等,在这种情况下,我完全错了。谢谢