无法在容器中启动seleniumtesting,WebDriverException:Chrome无法启动:exception退出

我的问题是 – 我不能启动容器内的seleniumtesting。

我的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包含我所有的testing, launch_selenium_tests.py – 它是我的testing启动器。

 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文件

所以,当我启动docker容器与-it / bin / bash(与terminal的交互模式),并启动testing我得到这个错误消息:

 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来切换容器,重写一些代码行,但没有为我工作。

任何想法如何我可以解决这个问题?

我会build议两件事情:

在启动驱动程序之前快速启动display ,以便代码:

 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') 

其次,我强烈build议使用service_log_pathservice_args参数给selenium webdriver来查看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) 

这可能会提供缺less的信息,为什么司机无法启动