Javascript Cucumber量角器-角度和非角度应用程序的页面超时问题
我们正在实施BDD方法,并使用量角器进行测试。被测试的应用程序具有角度和非角度页面。登录页面是非角度的,主页是角度的。脚本在登录页面上运行良好,当它到达非角度时,不会发生任何事情(未执行任何操作) 可能是什么问题 StepDefinition.jsJavascript Cucumber量角器-角度和非角度应用程序的页面超时问题,javascript,angular,protractor,Javascript,Angular,Protractor,我们正在实施BDD方法,并使用量角器进行测试。被测试的应用程序具有角度和非角度页面。登录页面是非角度的,主页是角度的。脚本在登录页面上运行良好,当它到达非角度时,不会发生任何事情(未执行任何操作) 可能是什么问题 StepDefinition.js Given(/^User lands on Login$/, function () { var appUrl = properties.get('appUrl'); return browser.driver.get('ap
Given(/^User lands on Login$/, function () {
var appUrl = properties.get('appUrl');
return browser.driver.get('appUrl');
browser.ignoreSynchronization = true;
});
When(/^User enters Username and Password$/, function () {
xph.get('Username').sendKeys(username);
return xph.get('Password').sendKeys('password');;
});
When(/^User Clicks Submit$/, function(){
browser.executeScript("arguments[0].click();",xph.get('Login'))
//return browser.sleep(7000);
browser.ignoreSynchronization = false;
browser.waitForAngular();
});
Then(/^User successfully logs$/, function() {
var hString= xph.get('LogOut');
hString.getText().then(function(text){expect(text).to.equal('LogOut');});
});
Then(/^User clicks Create Account$/, function () {
browser.executeScript("arguments[0].click();",xph.get('CreateAcct'))
});
代码中有两个问题,请按如下方式修复后重试: 1)您将
browser.ignoreSynchronization=true
放在return
后面,这毫无意义
在browser.get()
内部,它将检测到打开的页面是有角度的,除了将browser.ignoreSynchronization=true
放在browser.get()
之前,告诉量角器打开的页面是非角度页面
Given(/^User lands on Login$/, function () {
var appUrl = properties.get('appUrl');
browser.ignoreSynchronization = true;
return browser.driver.get('appUrl');
});
2)您必须为每个步骤定义返回一个类似承诺的对象,否则运行程序将在该步骤定义处暂停,直到超时
waitForAngular()
相当于browser.ignoreSynchronization=false代码>,前者在量角器更高版本中引入,后者可以在量角器更低和更高版本中工作
为什么不使用量角器APIxph.get('Login')。单击()
,但使用Javascript DOM API
单击Submit
按钮
When(/^User Clicks Submit$/, function(){
return element(<locator of Submit button>).click().then(function(){
return browser.ignoreSynchronization = false;
})
});
当(/^User单击Submit$/,function()时{
返回元素()。单击()。然后(函数()){
return browser.ignoreSynchronization=false;
})
});