我是新来用量角器工作,我是在你需要使用量角器时(下面的例子)使用ExpectedConditions
什么情况下不知道。我认为,量角器自动确定何时AngularJS页面完全加载。
let EC = ExpectedConditions;
let condition = EC.presenceOf(element(by.id("something")));
browser.wait(condition, 10000);
谢谢,埃里克
从我的经验用量角器工作,使用ExpectedConditions取决于你的自动化页面的行为。它主要用于由于如果病情没有在规定时间内遵守失败。
这些条件也将返回你可以处理自己的喜好的承诺。
我给你几个方案,所以你可以明白的地方使用它们。
例如: - 点击一个按钮后,会出现一个警告外观;然而,有一个API调用,这使得弹出需要更长的时间,也是一个小动画,所以我们要等待几秒钟,没有比这更。
// will click on a button
element(by.id('button')).click();
// will wait for the condition
let EC = ExpectedConditions;
browser.wait(EC.alertIsPresent(), 5000);
点击该按钮后,下面的代码将等待5秒钟,看是否警报存在,否则就会抛出一个错误。
例如: - 有出现针对在网页触发的每一个动作装载机。为此,我们要等到这个加载器会消失,所以我们可以用自动化进程继续下去。按业务需求,这部分代码不应该需要更长的时间超过10秒。
这个加载锁定整个页面,因此,尽管它是由其他元素不相互作用。
// trigger random action on page so loader appears
element(by.id('button2')).click();
// will wait for the condition
let EC = ExpectedConditions;
browser.wait(EC.invisibilityOf(element(by.id('loader'))), 10000);
点击一个按钮后,我们将给予10秒作为一个恩典装载机消失,否则病情会抛出一个错误。
例如: - 登录表单按钮默认是关闭的,所以它不能被点击,除非我们完成了用户名和密码文本框。要启用的按钮填充文本框具有快速的动画,我们想给它1秒钟完成,并检查是否我们可以单击它无论哪种方式后。
// complete both textfields required for the button to be enabled
element(by.id('username')).sendKeys('User1234');
element(by.id('password')).sendKeys('Protractor');
// will wait for the condition and then will click the button
let EC = ExpectedConditions;
browser.wait(EC.elementToBeClickable(element(by.id('loginButton'))), 1000);
element(by.id('loginButton')).click();
完成这两个文本框后,病情会等待1秒的元素是可点击,如果是,它会与下一行PROCEDE并单击它。在另一方面,如果没有,错误将被抛出。
例如: - 在用含3种风味单选按钮组的页面:巧克力,香草,草莓。根据您选择,您将看到不同的问题。开发商提到的问题是在所有时刻的页面,但由于其单选按钮的时刻选择为隐藏。在这种情况下,我们只是想检查DOM中存在的所有问题,无论他们是否会被选中一个单选按钮显示。
// check all questions directly, without selecting any radio buttons
let EC = ExpectedConditions;
browser.wait(EC.presenceOf(element(by.id('question-1'))), 1000);
browser.wait(EC.presenceOf(element(by.id('question-2'))), 1000);
browser.wait(EC.presenceOf(element(by.id('question-3'))), 1000);
时间在这里很无关紧要的;然而,使用这种条件下,我们将能够检查的问题,即使隐藏在DOM存在。如果一个缺失,错误会立即切断测试。
这些都是一些例子我不得不应付过去。使用的条件是情境,大多时候你想,因为他们拯救你自己构建它们的时候使用现有的条件下,它们是有用的。
PD:更多信息可以在Protractor API找到。