Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cucumber量角器-角度和非角度应用程序的页面超时问题_Javascript_Angular_Protractor - Fatal编程技术网

Javascript Cucumber量角器-角度和非角度应用程序的页面超时问题

Javascript 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

我们正在实施BDD方法,并使用量角器进行测试。被测试的应用程序具有角度和非角度页面。登录页面是非角度的,主页是角度的。脚本在登录页面上运行良好,当它到达非角度时,不会发生任何事情(未执行任何操作)

可能是什么问题

StepDefinition.js

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,前者在量角器更高版本中引入,后者可以在量角器更低和更高版本中工作

为什么不使用量角器API
xph.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;
}) 
});