微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在无头 chrome Docker 中获取运行 selenium 的空页面

如何解决在无头 chrome Docker 中获取运行 selenium 的空页面

我正在基于 Oracle Linux 的 Docker 中的无头 chrome 中运行测试用例。

我请求的页面应该被重定向到带有用户名密码字段的身份验证页面,但是我在 docker server() 中得到了空白页面。这在我的 macbook 上运行良好。

这是我尝试从 docker 内部直接使用 Chrome 浏览器运行相同的输出

bash-4.2# google-chrome --headless --no-sandBox  --dump-dom --ignore-ssl-errors --ignore-certificate-errors  --ssl-protocol=TLSv1 --allow-running-insecure-content --allow-insecure-localhost  https://example.com/

[0108/134257.881648:ERROR:bus.cc(393)] 连接总线失败:连接套接字失败/run/dbus/system_bus_socket:没有那个文件或目录

**[0108/134327.972921:ERROR:cert_issuer_source_aia.cc(104)] AiaRequest::OnFetchCompleted 得到错误 -3

**

操作系统详细信息:Linux 7e3f36f795d9 4.1.12-124.45.6.el7uek.x86_64 #2 SMP Wed 25 06:46:51 PST 2020 x86_64 x86_64 x86_64 GNU/Linux

即使我在 linux docker 中运行,传递的用户代理也是“--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/87.0.4280.88 Safari /537.36"。我应该使用 Linux 用户代理吗?

Chrome 二进制文件和 Chrome 网络驱动程序版本:87.0.4280.88 这可能是什么原因,我被困在过去 2 天里。 提前致谢。

Docker 文件如下

        FROM base_image
    ARG USER=usr
    RUN yum -y install wget \
    && wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm \
    && yum -y install libappindicator-gtk3-12.10.0-13.el7.x86_64  \
    && yum -y install libXScrnSaver-1.2.2-6.1.el7.x86_64  \
    && yum -y install liberation-fonts-1.07.2-16.el7.noarch \
    && yum -y install liberation-narrow-fonts-1.07.2-16.el7.noarch alsa-lib-1.1.8-1.el7.i686 xdg-utils alsa-lib-devel\
    && wget     http://mirror.centos.org/centos/7/os/x86_64/Packages/vulkan-filesystem-1.1.97.0-1.el7.noarch.rpm \
    && wget http://mirror.centos.org/centos/7/os/x86_64/Packages/vulkan-1.1.97.0-1.el7.x86_64.rpm \
    && rpm -ivh vulkan-filesystem-1.1.97.0-1.el7.noarch.rpm \
    && rpm -ivh vulkan-1.1.97.0-1.el7.x86_64.rpm \
    && rpm -ivh google-chrome-stable_current_x86_64.rpm \
    && yum clean all
    RUN rm -rf /var/cache/yum;
    EXPOSE 8080

解决方法

所以肯定是你的 docker 镜像中的问题。安装过程中发生了很多事情,我没有看到安装实际 chromedriver 时最明显的事情。

# install chromedriver
RUN apt-get install -yqq unzip
RUN wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/

有关自定义 docker 映像的更多信息,您可以在此 answer and thread 中查看。此外,我建议使用预构建的 Selenium docker image,它每次都对我来说完美无缺。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。