在Protractor中应该把implicitlyWait放在哪里?

5
如果我想使用implicitlyWait,我应该在测试中的哪里放置browser.manage().timeouts().implicitlyWait(5000);
1个回答

13
请将以下内容翻译成中文:
在您的protractor的conf.js文件的onPrepare()函数中添加它。添加implicitlyWait()的原因是因为隐式等待是protractor在执行操作之前等待的默认时间。让protractor知道隐式等待时间,甚至在测试开始之前就是最好的利用方式,而且onPrepare()函数在所有测试套件之前运行一次。
示例场景:
假设您有以下代码行-
element(LOCATOR).getText();

在您的测试规范中,Protractor在页面上启动自动化后执行它。现在,如果未在页面上找到具有指定定位器的元素,则Protractor不会立即引发错误,而是等待隐式等待时间完成。同时,在隐式超时之前,它会检查是否可以在DOM上定位元素。在隐式等待时间结束时,如果未找到该元素,则Protractor将引发相应的错误。因此,对于您执行的所有操作,有必要提前让Protractor知道隐式等待时间。
用法:
onPrepare: function(){
    browser.manage().timeouts().implicitlyWait(5000);
},

非常感谢!你帮助我很多,让我更好地理解了。 - winlinuz
浏览器.manage().timeouts().implicitlyWait(5000);是否也等待元素的可见性或DOM中元素的存在?Girish - Vikas Gupta
如果元素存在于DOM中但不可见,那么在这种情况下,Protractor会在抛出错误之前进行隐式等待吗?("元素不可见") - Vikas Gupta
1
@Vikash.777 它应该在上一次操作后等待您在网页上执行的每个操作,然后才会抛出错误。如果页面已经完全加载,则不会等待。如果要检查元素的可见性,请使用显式等待。 - giri-sh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接