如何使量角器的零件等待或变为同步?

时间:2015-05-27 19:46:02

标签: javascript selenium jasmine protractor mocha

我在量角器测试中有这样的代码,它进入主页确定我们需要登录然后调用此函数。注意我在NODE.js环境中运行它:

if(condition1)
  // code here
else if(condition2)
  // code here
else if(condition3)
{
    //nothing to do
}
else
  // error case here

但在验证function Login() { browser.findElement(by.id('ID')).then(function (ele) { ele.sendKeys('SomeUserName'); browser.findElement(by.id('password')).then(function (ele) { ele.sendKeys('SomePassword'); browser.findElement(by.partialButtonText('Sign in')).then(function (ele) { ele.click(); browser.getCurrentUrl().then(function (url) { expect(url).toBe("http://NextURLAfterClick"); debugger; }); }); }); }); } 之前,我无法点击此处,因此我发现的是我正在获取登录页面的网址, I想要在点击登录后获取网址

我怀疑这是对我的异步性质如何运作的误解。

1 个答案:

答案 0 :(得分:2)

  

如何使量角器的部件等待或变为同步?

您可以在browser.wait()的帮助下等待网址更改:

var urlChanged = function(url) {
  return function () {
    return browser.getCurrentUrl().then(function(actualUrl) {
      return url === actualUrl;
    });
  };
};

element(by.id('ID')).sendKeys('SomeUserName');
element(by.id('password')).sendKeys('SomePassword');
element(by.partialButtonText('Sign in')).click();

browser.wait(urlChanged("http://NextURLAfterClick")), 5000);

其中urlChangedselenium条款,是"自定义预期条件"。