【问题标题】:How to start a wide browser inside a docker container, for Protractor testing如何在 docker 容器中启动宽浏览器,以进行量角器测试
【发布时间】:2016-07-12 03:57:05
【问题描述】:

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

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 镜像运行测试时,它们会失败,因为按钮不可见。在不在 Docker/Xvfb 内部的浏览器上运行测试时没有问题。

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

通过链接这样的本地版本(以及一些用于调试的日志文件夹......)修改了 Xvfb 配置的设置

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 镜像上运行相同的测试时,我们还会得到一个“小型”浏览器:

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

更多信息: 我们在链接的 Docker 容器中启动所有“东西”,用于集成/端到端测试、数据库容器、用于服务器的 tomcat/rest/java 容器。 以及 Angular 网站的 npm 容器。

量角器.conf.js:

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

我们如何获得宽浏览器? (我们的网站显然没有使用响应式设计)

【问题讨论】:

    标签: docker protractor xvfb


    【解决方案1】:

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

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

    如果您使用的是调试节点,那么您就完成了。如果你不是,永远不要害怕!最大化不起作用,但driver.manage().window().setSize(new Dimension(1920, 1080)); 会。

    【讨论】:

    • 我不太确定答案的最后一部分,因为它似乎是 WebDriverJS 语法。但是关于更改 docker 映像以拉动 node-chrome-debug 和设置环境变量的部分肯定对我有用。
    • 这是 Java 语法,使用 WebDriver 2.53。
    【解决方案2】:

    我不确定您的问题是在 Docker、Protractor 还是 xvfb 中……但在 Protractor 方面,我会尝试设置特定的浏览器大小。 IE。超出maximize() 可能提供的大小。

    因此请尝试在 Protractor 配置 onPrepare 中设置以下内容:

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

    这应该为您提供一个广泛的浏览器...但不确定它是否会通过您的测试。

    我也可以试试changing 'xvfb's resolution...

    【讨论】:

    • 感谢您的回复。我们尝试了两种解决方案:在配置 onPrepare browser.driver.manage().window().maximize();或 browser.driver.manage().window().setSize(width, height);和 xvfb 通过配置文件 /etc/supervisor/conf.d/xvfb.conf 如上所述。在 docker 容器内没有一个工作...
    • @JanvO 你设法让它工作了吗?即使我面临同样的问题。 github.com/SeleniumHQ/docker-selenium/issues/220
    猜你喜欢
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 2022-07-20
    • 2017-11-30
    相关资源
    最近更新 更多