量角器E2E测试错误:对象[对象]没有方法'getWindowHandle'

时间:2014-02-11 11:08:24

标签: javascript angularjs selenium-webdriver jasmine protractor

我正试图点击按钮检查弹出的Facebook登录信息。

Error : Object [object Object] has no method 'getWindowHandle'.

代码段生成错误:

describe('Tests', function() {
  var ptor;
  var handlePromise;
  var util = require('util');

  beforeEach(function() {
    ptor = protractor.getInstance();
    handlePromise = ptor.getAllWindowHandles();
    var handlesDone = false;
    ptor.get('/SiteB_Upgrade_Device/app/index.html#/Recommendations#page');
    ptor.findElement(by.id('fb')).click();
    ptor.ignoreSynchronization = true;
  });

  describe('login', function() {
    return it('should switch to popUp\'s handle', function() {
      handlePromise.then(function(handles) {
        var popUpHandle = handles[0];
        var handle = browser.driver.switchTo().window(popUpHandle).getWindowHandle();
        expect(handle).toEqual(popUpHandle);
      });
    },30000);
  });
});

1 个答案:

答案 0 :(得分:6)

以下是我目前用于浏览弹出窗口/标签的内容:

// do stuff that will trigger the popup
// ...
browser.getAllWindowHandles().then(function (handles) {
  // switch to the popup
  browser.switchTo().window(handles[1]);
  // make sure the popup is now focused
  expect(browser.getCurrentUrl()).toEqual('popup/url');
  // do stuff with the popup
  // ...
  // go back to the main window
  browser.switchTo().window(handles[0]);
  // make sure we are back to the main window
  expect(browser.getCurrentUrl()).toEqual('original/url');
});

你只需要确保你的弹出窗口真的是一个新窗口而不是某种弹出窗口(在这种情况下你可以用css选择器来定位它)。

当你更改标签/弹出窗口时,要记住的另一件事是目标页面可能没有加载angularjs,这将渲染量角器用法。如果您遇到这种情况,只需使用browser.driver代替browser即可导航非角度页面。

希望这会有所帮助。