Javascript 量角器不';无法识别打开的本机警报

Javascript 量角器不';无法识别打开的本机警报,javascript,selenium-webdriver,jasmine,protractor,alert,Javascript,Selenium Webdriver,Jasmine,Protractor,Alert,我正在尝试处理本机打开的警报,但量角器无法识别此警报并向控制台发送错误- 1) 测试用例pull-LiveSite-Call 信息: NoSuchAlertError:没有打开的警报 (会话信息:chrome=51.0.2704.103) (驱动程序信息:chromedriver=2.14.313457(3D645C400EDF2E2C500566C9AA09063E707C9CF),平台=Windows NT 10.0 x86_64)(警告:服务器未提供任何堆栈跟踪 (资料) 命令持续时间或超

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

1) 测试用例pull-LiveSite-Call 信息: NoSuchAlertError:没有打开的警报 (会话信息:chrome=51.0.2704.103) (驱动程序信息:chromedriver=2.14.313457(3D645C400EDF2E2C500566C9AA09063E707C9CF),平台=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, chrome={userDataDir=C:\Users\idan\AppData\Local\Temp\scoped\u dir3336\u 20019}, takesHeapSnapshot=true,databaseEnabled=false,handlesAlerts=true, 版本=51.0.2704.103,平台=XP,浏览器连接启用=false, nativeEvents=true,acceptSslCerts=true,locationContextEnabled=true, WebStorage Enabled=true,browserName=chrome,takesScreenshot=true, javascriptEnabled=true,CSSSelectorEnabled=true}] 会话ID:96c8dfa136495b599f607d50616468de 堆栈跟踪: NoSuchAlertError:没有打开的警报 (会话信息:chrome=51.0.2704.103) (驱动程序信息:chromedriver=2.14.313457(3D645C400EDF2E2C500566C9AA09063E707C9CF),平台=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, chrome={userDataDir=C:\Users\idan\AppData\Local\Temp\scoped\u dir3336\u 20019}, takesHeapSnapshot=true,databaseEnabled=false,handlesAlerts=true, 版本=51.0.2704.103,平台=XP,浏览器连接启用=false, nativeEvents=true,acceptSslCerts=true,locationContextEnabled=true, WebStorage Enabled=true,browserName=chrome,takesScreenshot=true, javascriptEnabled=true,CSSSelectorEnabled=true}] 会话ID:96c8dfa136495b599f607d50616468de 在新的bot.Error(C:\automation\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\atoms\Error.js:113:18) 在Object.bot.response.checkResponse(C:\automation\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\atoms\response.js:106:9) 位于C:\automation\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\webdriver\webdriver.js:377:20 在[object object].promise.ControlFlow.runInFrame\uC:\automation\npm\node\U modules\Gragrator\node\U modules\selenium webdriver\lib\webdriver\promise.js:1877:20) 位于[object object].promise.Callback\uUg.goog.defineClass.notify(C:\automation\npm\node\u modules\Gragrator\node\u modules\selenium webdriver\lib\webdriver\promise.js:2464:25) 在[object object].promise.promise.notify(C:\automation\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\webdriver\promise.js:563:12) at Array.forEach(本机) 位于Object.goog.array.forEach(C:\automation\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\goog\array\array.js:203:43) 在[object object].promise.promise.notifyAll(C:\automation\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\webdriver\promise.js:552:16) 在goog.async.run.processWorkQueue(C:\automation\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\goog\async\run.js:125:21) From:Task:Asynchronous test function:it() 在[对象]。(C:\automation\npm\node\u modules\dragrator\node\u modules\jasminewd\index.js:93:33) 在[对象]。(C:\automation\npm\node\u modules\dragrator\node\u modules\minijasminenode\lib\async callback.js:45:37) 在[object object].jasmine.Block.execute(C:\automation\npm\node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:1174:17) 在[object object].jasmine.Queue.next(C:\automation\npm\node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31) 在[object object]。\u onTimeout(C:\automation\npm\node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:2199:18) 错误 在[对象]。(c:\automation\tests\testCases\newApp\livesiteClient.js:74:3) 在[object object].jasmine.Env.descripe(C:\automation\npm\node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:913:21) 在[object object].jasmine.Env.descripe(C:\automation\npm\node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:898:15) at描述(C:\automation\npm\node\u modules\dragrator\node\u 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();
    });
  });
});  
还有下面的代码(实际上是可行的,但它忽略了alret,没有进入“(alert)”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();

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

在Firefox的情况下,事情可能更简单。其想法是:

  • 首先手动打开Firefox,点击“呼叫”按钮并选择d