如何在Docker容器中启动一个宽浏览器,进行量angular器testing

在Docker容器中运行端到端testing时,我们需要浏览器很宽,以确保位于最右边的元素(aButton)实际上是可见的,并且像testing一样

expect(mainPage.aButton.isDisplayed()).toBeTruthy(); 

成功。

当显示浏览器宽度时,我们总是得到一个最接近1050的值:

 browser.driver.manage().window().getSize().then(function(size) { console.log('browser size', size); }); 

显示:

 browser size { height: 748, width: 1050, class: 'org.openqa.selenium.Dimension', hCode: 436207616 } 

当使用这两个docker镜像运行testing时,由于button不可见,所以它们失败。 在不在Docker / Xvfb中的浏览器上运行testing时,没有任何问题。

https://registry.hub.docker.com/u/caltha/protractor/

通过链接一个像这样的本地版本(和一些用于debugging的日志文件夹)来修改Xvfbconfiguration的设置。

 mkdir -p /tmp/docker/protractor/supervisor docker run --rm \ --name run_protractor \ -v /tmp/docker/protractor:/var/log \ -v /tmp/testproject:/project \ -v /tmp/xvfb.conf:/etc/supervisor/conf.d/xvfb.conf:ro \ caltha/protractor 

Xvfb设置文件xvfb.conf:

 [program:xvfb] command = Xvfb :1 -screen 0 1920x1080x16 stdout_logfile = /var/log/supervisor/%(program_name)s-out.log stderr_logfile = /var/log/supervisor/%(program_name)s-err.log 

在这个Docker镜像上运行相同的testing时,我们也得到一个“小”的浏览器:

http://www.function.fr/docker-with-chrome-and-selenium-and-firefox/

一些更多的信息:我们开始在链接的Docker容器中集成/端到端testing,数据库容器,服务器的tomcat / rest / java容器。 和一个NPM容器的angular度网站。

protractor.conf.js:

 .... onPrepare: function() { browser.driver.manage().window().maximize(); //var width = 1224; //var height = 800; //browser.driver.manage().window().setSize(width, height); } 

我们如何获得一个广泛的浏览器? (我们显然不会在我们的网站上使用响应式devise)

我不知道你的问题是在Docker,量angular器,或xvfb …但在量angular器方面,我会尝试设置一个特定的浏览器大小。 超出size maximize() IE可能会提供。

所以请尝试在你的ProtractorconfigurationonPrepare中设置以下内容:

 browser.manage().window().setSize(2024, 800); // or whatever 

应该给你一个广泛的浏览器…不知道它是否会通过你的testing。

我也可以尝试改变'xvfb的决议 …

将以下内容添加到您的docker-compose.yml文件中:

 chrome: image: selenium/node-chrome-debug environment: SCREEN_WIDTH: 1920 SCREEN_HEIGHT: 1080 ports: - 5900 links: - seleniumhub:hub 

如果你正在使用一个debugging节点,你就完成了。 如果你不是,不要害怕! 最大化将无法正常工作,但是driver.manage().window().setSize(new Dimension(1920, 1080)); 将。