【问题标题】:Protractor closing current tab量角器关闭当前选项卡
【发布时间】:2015-09-10 21:40:01
【问题描述】:

我有一个非角页面,我需要点击 2 个链接。单击在新选项卡中自动打开的链接之一时。现在我切换到新标签并设置browser.ignoreSynchronization = false,因为新打开的标签是一个角度窗口;并打电话给我的一项测试。一经核实。我想关闭当前选项卡并返回非角度页面以单击链接#2,该链接将再次在新选项卡中打开。我试过window.close,但我得到窗口未定义。我使用了 browser.window ,即使这样也不起作用。请指教

element(by.id('trMyUrl'));
    browser.getAllWindowHandles().then(function (handles) {
             var secondWindowHandle = handles[1];
             var firstWindowHandle = handles[0];
    browser.switchTo().window(secondWindowHandle).then(function () { //the focus moves on new tab\
    browser.ignoreSynchronization = false;    
    empLogin.test();
    window(secondWindowHandle).close()
    // window.close()
    // browser.close()
    // browser.window.close()

     })
});

【问题讨论】:

    标签: javascript angularjs selenium-webdriver jasmine protractor


    【解决方案1】:

    关闭当前关注的第二个窗口,然后首先关闭switchTo() 上一个选项卡以对其执行操作。方法如下-

    browser.switchTo().window(secondWindowHandle)
    .then(function () {
        browser.ignoreSynchronization = false;    
        empLogin.test();
    }).then(function(){
        browser.close(); //close the current browser
    }).then(function(){
        browser.switchTo().window(firstWindowHandle) //Switch to previous tab
        .then(function(){
            //Perform your operations on the first tab
        });
    });
    

    希望对你有帮助。

    【讨论】:

    • 您的代码正在关闭当前选项卡,但它在不执行 empLogin.test() 测试的情况下关闭。当我注释掉 firstwindowhandle 代码并保持 browser.close 代码原样然后运行我的测试时,我没有收到这样的窗口退出,目标窗口已经关闭消息。请指教。
    • 您遇到问题是因为 browser.close() 甚至在 empLogin.test() 完成之前就已执行。要处理这个问题,请尝试从 empLogin.test() 返回一个承诺,然后使用该承诺添加您的 browser.close() 函数。或者链接我在答案中更新的承诺。您还需要切换到 firstWindowHandle,因为量角器不知道它应该在哪里执行测试。谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多