【发布时间】:2017-02-26 12:49:06
【问题描述】:
我有一个包含两个 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
我安装了另一个服务并安装了 Protractor。
这是我的量角器配置文件:
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 容器 - 测试将失败。
1) 包含coachcard 指令应在选中时显示coachcard 类型面板
消息: 失败:在页面http://build-tool:8080/book/tests/directives/includes-coachcard/includes-coachcard-test.html 上找不到 Angular : 回溯 IES寻找角度超出 堆: 错误:在页面http://build-tool:8080/book/tests/directives/includes-coachcard/includes-coachcard-test.html 上找不到 Angular : 重试 es 寻找角度超出 在 /usr/lib/node_modules/protractor/built/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) 在 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:2775:27 在 /usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:639:7 在 process._tickCallback (node.js:369:9) 来自:任务:在控制流中运行它(“检查时应该显示教练卡类型面板”) 在对象。 (/usr/lib/node_modules/protractor/node_modules/jasminewd2/index.js:79:14) 从异步测试: 错误 在套房。 (/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?
我的测试如下所示:
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 浏览到测试文件,它加载正常 - 没有 Angular 错误。
【问题讨论】:
-
是不是因为你为firefox打开了4448端口而不是4444?
-
4448 仅供我从我的主机访问。它毫无怨言地连接到 4444 上的 WebDriver。我应该在那里做 4448:4444 以便在我的主机上连接。
-
您可以在 multiCapabilities 中设置浏览器,删除带有功能的行,这也可能导致问题,尝试为 firefox 功能创建没有 'shardTestFiles': true, 'maxInstances': 2
-
嗨 @Hikaryu 谢谢你的建议,我已经修改了量角器配置文件以及 Gunderson 的建议,但我现在收到以下错误消息......(我粘贴到 Gunderson 的图像版本) tinypic.com/r/256fyux/9
-
@AntonRand 添加 allScriptsTimeout: 60000,如果出现则粘贴错误信息
标签: selenium docker protractor