我正试图点击按钮检查弹出的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);
});
});
答案 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
即可导航非角度页面。
希望这会有所帮助。