量角器:为所有browser.wait调用设置超时

时间:2019-11-21 08:01:50

标签: angular protractor webdriver timeout

如果未指定可选的timeout参数,

browser.wait(..)似乎会无限期地等待。我想为所有此类调用指定默认值。有办法吗?

2 个答案:

答案 0 :(得分:0)

听起来像您可能需要使用browser.sleep()而不是browser.wait(),因为

  

browser.wait()计划命令以等待条件成立或承诺解决。

但是无论如何,您可以将默认超时存储在protractor.conf文件中

params: { defTiemout: 12000, } // you can put it anywhere and call it whatever

然后使用它

browser.sleep(browser.params.defTiemout)

答案 1 :(得分:0)

更正:默认情况下,隐式等待被设置为0,但是它们没有为browser.wait函数设置超时。对于这些,请尝试以下我的建议:

我只是为我的套件制作了一个帮助文件:

const EC = protractor.ExpectedConditions;
const timeOut = 5000;

const helpers = {
    waitForClickable: (element) => browser.wait(EC.elementToBeClickable(element), timeOut),
    waitForPresence: (element) => browser.wait(EC.presenceOf(element), timeOut),
    waitForVisible: (element) => browser.wait(EC.visibilityOf(element), timeOut),
    waitForInvisible: (element) => browser.wait(EC.invisibilityOf(element), timeOut),
    waitForUrl: (text) => browser.wait(EC.urlIs(text), timeOut)
};
module.exports = helpers;

像这样使用它们:

it('should wait for element', async () => {
    await helpers.waitForClickable(youElement);
});