无法在容器内启动selenium测试,WebDriver异常:Chrome失败启动:异常退出

2024-04-25 23:02:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是-我不能在容器内启动selenium测试。你知道吗

我的docker文件如下所示:

FROM selenium/node-chrome

EXPOSE 9090


USER root
RUN mkdir /code

WORKDIR /code
ADD requirements_tests.txt /code/
RUN apt-get update
RUN apt-get install -y python python-dev python-distribute python-pip
RUN pip install -r requirements_tests.txt
ADD /selenium_tests HTMLTestRunner.py launch_selenium_tests.py chromedriver /code/

/selenium_tests包含所有我的测试,launch_selenium_tests.py-它的我的测试启动程序。你知道吗

import time
from pyvirtualdisplay import Display
import os

class SeleniumTestCase(unittest.TestCase):

    def __init__(self, *args, **kwargs):
        """
            todo add validation for arguments
        :param args:
        :param kwargs:
        """
        super(SeleniumTestCase, self).__init__(args[0])
        self.base_url = args[1]


    def setUp(self):
        chromedriver = "./chromedriver"
        os.environ["webdriver.chrome.driver"] = chromedriver
        self.driver = webdriver.Chrome(executable_path='./chromedriver')
        self.display = Display(visible=0, size=(800, 800))
        self.display.start()

这是我的test_case文件

因此,当我用-it/bin/bash(与终端的交互模式)启动docker容器并启动测试时,我得到以下错误消息:

WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.20.353124 (035346203162d32c80f1dce587c8154a1efa0c3b),platform=Linux 4.2.0-35-generic x86_64)

我已经尝试用selenium切换容器,重写一些代码行,但没有任何效果。你知道吗

你知道我该怎么解决这个问题吗?你知道吗


Tags: 文件dockerrunpyimportselfaddselenium
1条回答
网友
1楼 · 发布于 2024-04-25 23:02:45

我建议两件事:

{so}在启动驱动程序之前^-cd1>:

def setUp(self):
    chromedriver = "./chromedriver"
    os.environ["webdriver.chrome.driver"] = chromedriver
    self.display = Display(visible=0, size=(800, 800))
    self.display.start()
    self.driver = webdriver.Chrome(executable_path='./chromedriver')

其次,我强烈建议使用selenium webdriver的service_log_pathservice_args参数来查看chromedriver的输出:

service_log_path = "{}/chromedriver.log".format(outputdir)
service_args = [' verbose']
driver = webdriver.Chrome('/path/to/chromedriver',
        service_args=service_args,
        service_log_path=service_log_path)

这可能会提供驱动程序无法启动的缺失信息

相关问题 更多 >