Docker容器中的Selenium似乎无法正确呈现Angular 2应用程序

时间:2017-11-09 20:00:36

标签: angular selenium robotframework

我正在尝试将机器人框架的实例与Selenium 2和Chrome进行对接,以便在持续集成/部署环境中进行自动化测试。我设法将一个Dockerfile放在一起,创建一个包含必要构建块的图像。我可以成功执行简单的RF测试,例如在Google上提交搜索的测试。

但是,当我尝试执行针对我们测试的Angular 2应用程序的类似简单测试用例时,测试失败。测试包括三个步骤:导航到登录页面,填写登录表单并提交,等到页面上出现“仪表板”一词(超时15秒,应用程序加载速度比此快)。我相信在Selenium中存在一些严重的渲染或处理问题,基于我从RF的测试执行日志中提取的屏幕截图。

Screenshot from failed test case in Robot Framework execution log

不仅没有显示任何文字(只有像素化的矩形),布局也非常关闭(部分菜单按钮向下移动“一行”)。

以防万一,这是我的Dockerfile。

if

和(部分)entry_point.sh:

>>> if 0:
...     print("yes")
... 
>>> if 1:
...     print("yes")
... 
yes
>>> if -1:
...     print("yes")
... 
yes

我已经看到一些帖子说Selenium和Angular 2存在问题,并且访问页面元素并找出页面何时完全加载是有问题的。但是,我所看到的那些似乎都不适用于此。失败的测试声明如下:

FROM python:2.7-alpine

RUN apk add --no-cache \
    udev \
    chromium \
    chromium-chromedriver \
    xvfb \
    bash

RUN pip install --no-cache-dir \
  robotframework==3.0.2 \
  robotframework-selenium2library==1.8.0 \
  selenium==3.3.1

# Chrome requires docker to have cap_add: SYS_ADMIN if sandbox is on.
# Disabling sandbox and gpu as default.
RUN sed -i "s/self._arguments\ =\ \[\]/self._arguments\ =\ \['--no-sandbox',\ '--disable-gpu'\]/" /usr/local/lib/python2.7/site-packages/selenium/webdriver/chrome/options.py

COPY entry_point.sh /opt/bin/entry_point.sh
RUN chmod +x /opt/bin/entry_point.sh

ENTRYPOINT [ "/opt/bin/entry_point.sh" ]

我希望只要Selenium正确呈现页面,就会在15秒内找到词汇表(一个菜单项)。在真实的浏览器中,被测页面最多加载2-3秒。从混乱的UI布局和不完整的UI布局来看,问题似乎存在于其他地方。

不幸的是,我在这里处理的三种技术对我来说仍然相当新,Docker(或一般的Linux),Robot Framework和Selenium。我不清楚这是单独使用Selenium的问题,是由于Selenium与Xvfd一起运行无法解决的问题,还是其他完全不同的问题。

我很欣赏任何指示我应该继续进行故障排除的方法。

0 个答案:

没有答案