【发布时间】: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