Javascript 如何在docker compose中运行量角器测试

Javascript 如何在docker compose中运行量角器测试,javascript,docker,protractor,docker-compose,selenium-chromedriver,Javascript,Docker,Protractor,Docker Compose,Selenium Chromedriver,我有问题,开始测试使用量角器框架使用docker图像。当我在本地selenium服务器中启动测试时,测试成功。 但当我使用docker image时,我得到了错误E/量角器-无法在第页上找到角度:重试查找角度超过 my config.js exports.config = { framework: 'jasmine', seleniumAddress: 'http://hub:4444/wd/hub', specs: ['e2e/myTest.js'], capabilities

我有问题,开始测试使用量角器框架使用docker图像。当我在本地selenium服务器中启动测试时,测试成功。 但当我使用docker image时,我得到了错误E/量角器-无法在第页上找到角度:重试查找角度超过

my config.js

exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://hub:4444/wd/hub',
  specs: ['e2e/myTest.js'],
  capabilities: {
    'browserName': 'chrome',
    'chromeOptions': {
      args: ['--no-sandbox']
    }
  },
  chromeOnly: true
};
myTest.js

describe('example test', function() {
  var homePage = require('./pages/homePage.js');
  var homePage = new homePage();

  it('my test...', function() {

    browser.get('http://localhost:4200/');
....
Package.json文件

{
  "name": "client",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "npm install && ng serve -H 0.0.0.0",
    "build": "ng build",
    "pretest": "webdriver-manager update",
    "test": "protractor config.js",
    "lint": "ng lint"
  },
docker-compose.yml的片段

  angular:...
  mypayara:...
  chrome:
    image: selenium/node-chrome:3.9.1-actinium
    volumes:
        - /dev/shm:/dev/shm
    depends_on:
        - hub
    environment:
        HUB_HOST: hub
  hub:
    image: selenium/hub:3.9.1-actinium
    ports:
      - "4444:4444"
    depends_on:
        - angular
当我使用命令开始测试时

docker compose exec angular sh-c“npm测试”

我犯了那个错误

[18:51:48] E/protractor - Could not find Angular on page http://localhost:4200/ : retries looking for angular exceeded
F[18:51:59] E/protractor - Could not find Angular on page http://localhost:4200/ : retries looking for angular exceeded
F

Failures:
1) Register account test should create a account
  Message:
    Failed: Angular could not be found on the page http://localhost:4200/.If this is not an Angular application, you may need to turn off waiting for Angular.
                              Please see 
                              https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load
  Stack:
    Error: Angular could not be found on the page http://localhost:4200/.If this is not an Angular application, you may need to turn off waiting for Angular.
                              Please see 
                              https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load
        at executeAsyncScript_.then (/usr/src/app/node_modules/protractor/built/browser.js:720:27)
        at ManagedPromise.invokeCallback_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:1376:14)
        at TaskQueue.execute_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3084:14)
        at TaskQueue.executeNext_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3067:27)
        at asyncRun (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:2927:27)
        at /usr/src/app/node_modules/selenium-webdriver/lib/promise.js:668:7
        at process._tickCallback (internal/process/next_tick.js:109:7)
    From: Task: Run it("should create a account") in control flow
        at UserContext.<anonymous> (/usr/src/app/node_modules/jasminewd2/index.js:94:19)
    From asynchronous test: 
    Error
        at Suite.<anonymous> (/usr/src/app/e2e/registertest.js:7:3)
        at Object.<anonymous> (/usr/src/app/e2e/registertest.js:1:63)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)

你知道我可以怎么处理这个问题吗?

为了检查原因是否有角度,请在“it”块中的代码中添加这一行

await browser.waitForAngularEnabled(false);

观察正在发生的事情

我检查它,当我添加这一行时(由于我出错而缺少等待:等待未定义),浏览器在网站中打开,但在测试中找不到下一个元素。失败:使用locator:By(部分链接文本,exampleElement)未找到元素,但仅测试浏览器。waitForAngularEnabled(false);获取(');是成功,你知道它错在哪里吗?可能是你所寻找的元素被错误地指向了。您可以在浏览器控制台中直接检查它,例如:
document.querySelector('div.dropdown\uu target>span.type name')
然后单击enter,您将在该路径上找到任何可用的定位器。另外,如果未定义Wait,您可能会使用controlFlow,这将被更好地剪切以使用async/Wait和off selenium promise manager-->
selenium promise\u manager:false,在量角器配置中
错误查找元素没有问题,因为当我在本地计算机上启动selenium服务器(终端使用命令webdriver manager start)并运行测试时,测试运行成功。但我需要在docker映像中启动测试,因为我使用travis在合并拉请求之前自动测试。我得到了它,抱歉,但在这里我不知道该做什么,因为到目前为止我还没有遇到docker使用
await browser.waitForAngularEnabled(false);