Транспортир не распознает открытую нативную тревогу

javascript selenium-webdriver jasmine protractor alert

596 просмотра

1 ответ

581 Репутация автора

Я пытаюсь обработать собственное открытое предупреждение, но транспортир не распознает это предупреждение и отправляет ошибку на консоль -

\ автоматизации \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ обещание: js: 563: 12) в Array.forEach (родной) в Object.goog.array.forEach (C: \ автоматизация \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ goog \ array \ array.js: 203: 43) в [объектный объект] .promise.Promise.notifyAll_ (C: \ автоматизация \ npm \ node_modules \ протрактор \ node_modules \ selenium -webdriver \ lib \ webdriver \ обещание.js: 552: 16) в goog.async.run.processWorkQueue (C: \ automatic \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ goog \ async \ run.js : 125: 21) From: Task: Асинхронная тестовая функция: it () в [object Object]. (C: \ automatic \ npm \ node_modules \ protractor \ node_modules \ jasminewd \ index.js: 93: 33) в [объект Объект]. (С: \ automatic \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ async-callback.js: 45: 37) в [объектный объект] .jasmine.Block.execute (C: \ автоматизация \ npm \ node_modules \ протрактор \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1.js: 1174: 17) в [объектном объекте] .jasmine.Queue.next_ (C: \ автоматизация \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1 .js: 2209: 31) в [объектный объект] ._ onTimeout (C: \ automatic \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1.js: 2199: 18) Ошибка в [объектном объекте] , (c: \ автоматизация \ tests \ testCases \ newApp \lifeiteClient.js: 74: 3) в [объектный объект] .jasmine.Env.describe_ (C: \ автоматизация \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine -1.3.1.js: 913: 21) в [объекте объекта] .jasmine.Env.describe (C: \ автоматизации \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1.js: 898: 15) при описании (C: \ автоматизация \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3 .1.js: 658: 27) на объекте. (C: \ автоматизация \ тесты \ 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();
Автор: Idan E Источник Размещён: 18.07.2016 08:34

Ответы (1)


0 плюса

350718 Репутация автора

Решение

Проблема в том, что это диалоговое окно «Запрос внешнего протокола» - это не собственное оповещение, а диалоговое окно браузера / системы, которым нельзя управлять со стороны транспортира / селена . Вот соответствующие темы с некоторой дополнительной информацией в случае chrome:

В случае с Firefox все может быть проще. Идея состоит в том, чтобы:

  • Сначала откройте Firefox вручную, нажмите кнопку «Позвонить» и выберите приложение по умолчанию
  • перейдите в «Справка» -> «Информация об устранении неполадок» и нажмите кнопку в строке «Папка профиля»
  • скопируйте путь к каталогу профиля и запустите транспортир + firefox с этим профилем
Автор: alecxe Размещён: 18.07.2016 08:11
Вопросы из категории :
32x32