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
- 如何在Docker容器中启动一个宽浏览器,进行量angular器testing
- 启用Docker支持Angular项目
- 需要使用Azure容器registry将angular度种子高级项目部署到Azure应用程序服务
- Docker for Mac和–host选项
- 如何dockerize Ruby on Rails的生产?
- 在Docker中运行busybox httpd的angular2 webpack应用程序
- Docker中的端口转发的Rails应用似乎会导致CSRFexception
- Angular 2应用程序部署在AWS上运行的Docker容器中
- 如何在Linux上使用Docker和Azure Web App部署Angular 4应用程序