无法在容器中启动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_path
和service_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的信息,为什么司机无法启动