NoSuchWindowError: Контекст просмотра был отброшен с помощью GeckoDriver Firefox и Protractor (Selenium) - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь запустить простой тестовый скрипт с использованием транспортира.

Среда:

Node Version: v9.8.0
Protractor Version: 5.4.1
Angular Version: 1.x
Browser(s): Mozilla Firefox 60.1.0
Operating System and Version: HELiOS release 6.10

Вот мой конфигурационный файл транспортира.

exports.config = {
  specs: ['todo-spec.js'],
  capabilities: {
    browserName: 'firefox',
    marionette : true
  }
};

Этомой тестовый скрипт (todo-spec.js)

describe('application homepage', function() {
  it('should open homepage', function() {
    console.log("Opening localhost app");
    browser.get('http://localhost:8080/app/');
    browser.sleep(20000); // just to check if application loaded or not
  });
});

Это мой каталог node_modules / protractor / node_modules / webdriver-manager / selenium / выглядит так:

enter image description here

Когда я запускаю свой тест с использованием /path/to/protractor conf.js, я получаю указанную ниже ошибку.

[16:51:03] I/launcher - Running 1 instances of WebDriver
[16:51:03] I/local - Starting selenium standalone server...
[16:51:04] I/local - Selenium standalone server started at http://<ip-address>:45089/wd/hub
Started
Opening localhost
F

Failures:
1) application homepage should open homepage
  Message:
    Failed: Browsing context has been discarded
    Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:13:22.693Z'
    System info: host: 'HOSTNAME', ip: 'ip_address', os.name: 'Linux', os.arch: 'i386', os.version: '2.6.32-754.3.5.el6.x86_64', java.version: '1.8.0_181'
    Driver info: driver.version: unknown
  Stack:
    NoSuchWindowError: Browsing context has been discarded
    Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:13:22.693Z'
    System info: host: 'HOSTNAME', ip: 'ip_address', os.name: 'Linux', os.arch: 'i386', os.version: '2.6.32-754.3.5.el6.x86_64', java.version: '1.8.0_181'
    Driver info: driver.version: unknown
        at Object.checkLegacyResponse (/export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/error.js:546:15)
        at parseHttpResponse (/export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/http.js:509:13)
        at doSend.then.response (/export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/http.js:441:30)
        at <anonymous>
        at process._tickCallback (internal/process/next_tick.js:118:7)
    From: Task: Protractor.get(http://localhost:8080/app/) - reset url
        at thenableWebDriverProxy.schedule (/export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/webdriver.js:807:17)
        at ProtractorBrowser.executeScriptWithDescription (/export/home/test/protractor_test_2/node_modules/protractor/built/browser.js:404:28)
        at driver.controlFlow.execute.then.then.then (/export/home/test/protractor_test_2/node_modules/protractor/built/browser.js:679:25)
        at ManagedPromise.invokeCallback_ (/export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/promise.js:1376:14)
        at TaskQueue.execute_ (/export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/promise.js:3084:14)
        at TaskQueue.executeNext_ (/export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/promise.js:3067:27)
        at asyncRun (/export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/promise.js:2927:27)
        at /export/home/test/protractor_test_2/node_modules/selenium-webdriver/lib/promise.js:668:7
        at <anonymous>
        at process._tickCallback (internal/process/next_tick.js:118:7)
    From: Task: Run it("should open homepage") in control flow
        at UserContext.<anonymous> (/export/home/test/protractor_test_2/node_modules/jasminewd2/index.js:94:19)
    From asynchronous test:
    Error
        at Suite.<anonymous> (/export/home/test/protractor_test_2/todo-spec.js:2:3)
        at Object.<anonymous> (/export/home/test/protractor_test_2/todo-spec.js:1:63)
        at Module._compile (module.js:649:30)
        at Object.Module._extensions..js (module.js:660:10)
        at Module.load (module.js:561:32)
        at tryModuleLoad (module.js:501:12)

1 spec, 1 failure
Finished in 0.159 seconds

[16:51:06] I/local - Shutting down selenium standalone server.
[16:51:06] I/launcher - 0 instance(s) of WebDriver still running
[16:51:06] I/launcher - firefox #01 failed 1 test(s)
[16:51:06] I/launcher - overall: 1 failed spec(s)
[16:51:06] E/launcher - Process exited with error code 1

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

удалось решить эту проблему с помощью приведенной ниже конфигурации.

- Protractor: v5.4.1 
- Selenium JAR driver: selenium-server-standalone-3.141.59.jar 
- geckodriver:geckodriver-v0.20.0-linux64

Также нам нужно указать путь geckodrvier в файле конфигурации транспортира.

geckoDriver: 'node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.20.0'

По умолчанию webdriver-manager будетзагрузите последнюю версию geckodriver, которая является 0.24.0.Но необходим geckdriver v0.20.0, поэтому я скачал его вручную и поместил в каталог node_modules / protractor / node_modules / webdriver-manager / selenium /.

Надеюсь, это поможет людям, сталкивающимся с подобной проблемой.

0 голосов
/ 05 февраля 2019

Это сообщение об ошибке ...

Failed: Browsing context has been discarded

... означает, что связь между GeckoDriver и Марионеткой была прервана.

Еще немного информации о бинарной версии GeckoDriver дало бы нам некоторые подсказки о том, что случилось неправильно.Однако эта проблема может возникнуть из-за следующих факторов:

Этот сценарий использования

Основная причина этогоКажется, проблема в MemoryUsage .Согласно Прерывистый awsy \ test_memory_usage.py TestMemoryUsage.test_open_tabs |NoSuchWindowException: контекст просмотра был отброшен , который прерывистый по своей природе.Однажды эта проблема была помечена как RESOLVED , а затем снова REOPENED .

Как упоминалось @Madhan при работе с AngularJS приложениями и Protractor всегда включают:

waitForAngularEnabled(true);

Наконец, в соответствии с лучшими практиками при работе с GeckoDriver , Selenium и Firefox Browser следуйте приведенным ниже инструкциямТаблица совместимости:

Поддерживаемые платформы

supported_platforms_geckodriver_24

...