我正在尝试切换AngularJS应用程序的弹出窗口。以下是我的代码:
browser.ignoreSynchronization = true;
browser.getAllWindowHandles().then(function (handles) {
browser.switchTo().window(handles[1]);
});
获取以下错误:
Failed: null value in entry: name=null
Stack:
UnknownError: null value in entry: name=null
答案 0 :(得分:5)
您可能尝试在实际打开之前切换到新选项卡 - 等待窗口句柄计数超过所需的计数并使用自定义预期条件:
function windowCount(count) {
return function () {
return browser.getAllWindowHandles().then(function (handles) {
return handles.length >= count;
});
};
};
browser.wait(windowCount(2), 10000);
browser.getAllWindowHandles().then(function (handles) {
browser.switchTo().window(handles[1]);
});
答案 1 :(得分:0)
在AngularJS应用程序中没有弹出窗口的句柄,我们需要获取弹出窗口的模型ID,然后需要识别它上面的元素
例如
var alertPop = element(by.id(' popId'))
期望(alertPop.isDisplayed())toBeTruthy();
var element = alertPop.element(by.model(' vm.message'));