Docker Selenium – testing通过Chrome,但不是Firefox

我有一个有两个Selenium服务的Docker Compose文件:

selenium-chrome: container_name: selenium-chrome image: selenium/standalone-chrome ports: - "4444:4444" networks: - teamcity-network selenium-firefox: container_name: selenium-firefox image: selenium/standalone-firefox ports: - "4448:4448" networks: - teamcity-network 

我有安装了量angular器的另一项服务。

这是我的量angular器configuration文件:

 exports.config = { onPrepare: function () { var jasmineReporters = require('jasmine-reporters'); jasmine.getEnv().addReporter(new jasmineReporters.TeamCityReporter()); }, framework: 'jasmine2', specs: [ '/project/tests/**/*-spec.js' ], capabilities: {}, multiCapabilities: [ { 'browserName': 'chrome', 'shardTestFiles': true, 'maxInstances': 2 } ], 'baseUrl': 'http://build-tool:8080', seleniumAddress: 'http://selenium:4444/wd/hub' }; 

这运行成功,但如果我更改浏览器名称Firefox和selenium地址到我的Firefox容器 – testing失败。

1)包括coachcard指令时应显示coachcardtypes面板时检查

消息:失败:在页面上找不到angular度http:// build-tool:8080 / book / tests / directives / includes-coachcard / includes-coachcard-test.html :在页面上找不到angular度http:// build-tool:8080 / book / tests / directives / includes-coachcard / includes-coachcard-test.html :在/ usr / lib / node_modules /量angular器/内置/ browser.js:519:23在ManagedPromise.invokeCallback_(/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1379:14)在TaskQueue.execute_(/ usr / lib /node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2913:14)at TaskQueue.executeNext_(/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2896:21 )在/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:639上的/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2775:27: 7在process._tickCallback(node.js :369:9)发件人:任务:在对象的控制stream程中运行它(“应该在选中时显示coachcardtypes面板”)。 (/usr/lib/node_modules/protractor/node_modules/jasminewd2/index.js:79:14)从asynchronoustesting:套件错误。 (/project/tests/directives/includes-coachcard/includes-coachcard-test-spec.js:7:5)在对象。 (/project/tests/directives/includes-coachcard/includes-coachcard-test-spec.js:4:1)在Module._compile(module.js:409:26)在Object.Module._extensions..js(module .js:416:10)在Module.load(module.js:343:32)在Function.Module._load(module.js:300:12)

有谁知道为什么这将适用于Chrome而不是Firefox?

我的testing看起来像这样:

 var TEST_PAGE = "/tests/directives/includes-coachcard/includes-coachcard-test.html"; describe("includes coachcard directive", function () { it("should show coachcard types panel when checked", function () { browser.get(TEST_PAGE); var panel = element(by.css('.test1 div.panel')); var checkbox = element(by.css('.test1 div.Checkbox-button')); expect(panel.isDisplayed()).not.toBeTruthy(); checkbox.click(); expect(panel.isDisplayed()).toBeTruthy(); }); }); 

注 – 我可以通过HTTP浏览到testing文件,并且加载正常 – 没有angular度错误。

听起来像是一个计时问题,请参阅此文档以参考量angular器超时。

如果它在Chrome上运行没有问题,那么最有可能的问题将被链接文档中的build议修复:更新您的configuration文件中的getPageTimeout 。 在应用程序中等待angular加载的默认时间是10秒。

我发现我做错了什么。 我正在运行的testing有一个HTML导入语句。

 <link rel="import" href="thirdPartyScripts.html" /> 

这不是我的本地Firefox失败,因为我必须设置:

 dom.webcomponents.enabled=true 

在我的偏好。 我更改了我的代码,以便它不再使用导入,但是可以根据需要在Selenium实例上设置此首选项。

Chrome支持此function,但Firefox不(默认) – http://caniuse.com/#feat=imports