【问题标题】:Protractor doesn't recognize opened native alert量角器无法识别打开的本机警报
【发布时间】:2016-07-18 08:34:51
【问题描述】:

我正在尝试处理原生打开的警报,但量角器无法识别此警报并向控制台发送错误 -

1) 测试用例拉取 - LiveSite - 调用 信息: NoSuchAlertError:没有打开警报 (会话信息:chrome=51.0.2704.103) (驱动程序信息:chromedriver=2.14.313457(3d645c400edf2e2c500566c9aa096063e707c9cf),平台=Windows NT 10.0 x86_64) (警告:服务器未提供任何堆栈跟踪 信息) 命令持续时间或超时:9 毫秒 构建信息:版本:'2.45.0',修订:'5017cb8',时间:'2015-02-26 23:59:50' 系统信息:主机:'vCitaQA',ip:'10.0.0.5',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_65 ' 驱动程序信息:org.openqa.selenium.chrome.ChromeDriver 功能 [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, 铬={userDataDir=C:\Users\idan\AppData\Local\Temp\scoped_dir3336_20019}, 需要HeapSnapshot=true,databaseEnabled=false,handlesAlerts=true, 版本=51.0.2704.103,平台=XP,browserConnectionEnabled=false, nativeEvents=true,acceptSslCerts=true,locationContextEnabled=true, webStorageEnabled=true,browserName=chrome,takeScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}] 会话 ID:96c8dfa136495b599f607d50616468de 堆栈跟踪: NoSuchAlertError:没有打开警报 (会话信息:chrome=51.0.2704.103) (驱动程序信息:chromedriver=2.14.313457(3d645c400edf2e2c500566c9aa096063e707c9cf),平台=Windows NT 10.0 x86_64) (警告:服务器未提供任何堆栈跟踪 信息) 命令持续时间或超时:9 毫秒 构建信息:版本:'2.45.0',修订:'5017cb8',时间:'2015-02-26 23:59:50' 系统信息:主机:'vCitaQA',ip:'10.0.0.5',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_65 ' 驱动程序信息:org.openqa.selenium.chrome.ChromeDriver 功能 [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, 铬={userDataDir=C:\Users\idan\AppData\Local\Temp\scoped_dir3336_20019}, 需要HeapSnapshot=true,databaseEnabled=false,handlesAlerts=true, 版本=51.0.2704.103,平台=XP,browserConnectionEnabled=false, nativeEvents=true,acceptSslCerts=true,locationContextEnabled=true, webStorageEnabled=true,browserName=chrome,takeScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}] 会话 ID:96c8dfa136495b599f607d50616468de 在新的 bot.Error (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:113:18) 在 Object.bot.response.checkResponse (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:106:9) 在 C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:377:20 在 [object Object].promise.ControlFlow.runInFrame_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20) 在 [object Object].promise.Callback_.goog.defineClass.notify (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2464:25) 在 [object Object].promise.Promise.notify_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:563:12) 在 Array.forEach (本机) 在 Object.goog.array.forEach (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\array\array.js:203:43) 在 [object Object].promise.Promise.notifyAll_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:552:16) 在 goog.async.run.processWorkQueue (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21) 来自:任务:异步测试函数:it() 在 [对象对象]。 (C:\automation\npm\node_modules\protractor\node_modules\jasminewd\index.js:93:33) 在 [对象对象]。 (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\async-callback.js:45:37) 在 [object Object].jasmine.Block.execute (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:1174:17) 在 [object Object].jasmine.Queue.next_ (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31) 在 [object Object]._onTimeout (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2199:18) 错误 在 [对象对象]。 (c:\automation\tests\testCases\newApp\livesiteClient.js:74:3) 在 [object Object].jasmine.Env.describe_ (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:913:21) 在 [object Object].jasmine.Env.describe (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15) 在描述 (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:658:27) 在对象。 (c:\automation\tests\testCases\newApp\livesiteClient.js:1:63)

我已经尝试过使用-

 describe('vCita Production - Livesite (client side)', function() {

   var EC = protractor.ExpectedConditions;
   var callBtn = $$('div.action-content.layout-align-center.layout-column.flex').get(1); 

      beforeEach(function() {
        browser.ignoreSynchronization = true;
      });

      afterEach(function() {
        browser.ignoreSynchronization = false;
      });

  it('click on call button', function() {
    callBtn.click().then(function(){
      browser.driver.sleep(2000);
      browser.driver.switchTo().alert().dismiss();
    });
  });
});  

还有下面的代码(这实际上是有效的,但它只是忽略了警报并且没有进入“(警报)”if语句 -

browser.getAllWindowHandles().then(function (handles) {      
    browser.switchTo().window(handles[handles.length - 1]);
    var alertDialog = browser.switchTo().alert().thenCatch(function (e) {
        if (e.code !== 27) { throw e; }
    }).then(function (alert) {
        if (alert) {
            expect(alertDialog.getText()).toEqual("External Protocol Request");
            return alert.dismiss();
        }

callBtn.click();

【问题讨论】:

    标签: javascript selenium-webdriver jasmine protractor alert


    【解决方案1】:

    问题是,这是“外部协议请求”对话框 - 它不是本机警报,它是一个浏览器/系统对话框,无法从 Protractor/Selenium 端控制。以下是chrome 的相关线程以及一些附加信息:

    如果是 Firefox,事情可能会更简单。这个想法是:

    • 先手动打开火狐,点击“调用”按钮,选择默认应用
    • 转到“帮助”->“故障排除信息”,然后单击“个人资料文件夹”行中的按钮
    • 将路径复制到配置文件目录和start protractor+firefox with this profile

    【讨论】:

    • @IdanE 它是否因超时异常而失败?您是否看到在测试运行期间打开了警报?您确定这是本地警报吗?谢谢。
    • @IdanE 啊,你的意思是“外部协议请求”对话框?如果是,我知道这是关于什么的。
    • 是的,我的意思是这个对话,太棒了!
    猜你喜欢
    • 2014-09-22
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2012-08-06
    相关资源
    最近更新 更多