【问题标题】:error in running selenium (chrome driver) on GCE?在 GCE 上运行 selenium(chrome 驱动程序)时出错?
【发布时间】:2019-08-28 08:00:44
【问题描述】:

我试图在 GCE(谷歌计算引擎)上运行 chrome 浏览器以实现硒的目的,但我收到的错误是:

ERROR: 
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac),platform=Linux 4.9.0-9-amd64 x86_64)

我已尝试安装 2.26 的 google chrome 和 chromium 驱动程序。在 GCE 上。已经在python代码中添加了--headless、--disable-dev-shm-usage、--no-sandbox等参数,但错误一直存在。

FOR INSTALLING ! ! !
sudo apt-get install libxss1 libappindicator1 libindicator7
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

sudo dpkg -i google-chrome*.deb
sudo apt-get install -f

sudo apt-get install xvfb

sudo apt-get install unzip

wget -N http://chromedriver.storage.googleapis.com/2.26/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
# PYTHON CODE FOR PERFORMING SELENIUM TASKS #
chrome_options = Options()
chrome_options.add_argument("-disable-notifications")
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument("--window-size=1920x1080")

driver = webdriver.Chrome('/home/dev_baseh/finalpdf/chromedriver',chrome_options=chrome_options)
driver.get('https://www.investorslounge.com/stock-market/index-history')

我的问题是,当我发送 chrome 驱动程序的正确路径时,谷歌浏览器也安装在 GCE 上,并且随着安装 xvfb 的扩展而无头运行,为什么它会给我错误?

【问题讨论】:

    标签: python linux google-chrome selenium-webdriver google-compute-engine


    【解决方案1】:

    更新

    首先,尝试使用ChromeOptions() 而不是Options()。同样在 Linux 中,我认为您需要首先启动显示。 请尝试以下操作:

    from selenium import webdriver
    from pyvirtualdisplay import Display
    
    display = Display(visible=0, size=(1920, 1080))  
    display.start()
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("-disable-notifications")
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument("--window-size=1920x1080")
    
    driver = webdriver.Chrome('/home/dev_baseh/finalpdf/chromedriver', chrome_options=chrome_options)
    driver.get('https://www.investorslounge.com/stock-market/index-history')
    

    【讨论】:

    • 感谢您的回复,但是我使用的是Linux系统,我的GCE也是在Linux系统上运行的,所以我下载了Linux的chrome驱动程序,无法添加“.exe”扩展名。在linux中,没有扩展!请指导。我已经导入了:from selenium.webdriver.chrome.options import Options 这就是为什么我使用 Options() 而不是 webdriver.ChromeOptions() 的原因,无论如何,我已经按照你的说法进行了更改。
    • 我之前应用过这个显示版本,它给我的错误是找不到值,错误是:ERROR selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing 'value ' (Session info: chrome=76.0.3809.100) (Driver info: chromedriver=2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac),platform=Linux 4.9.0-9-amd64 x86_64) 这就是为什么我添加了参数“--window-size=1920x10 "
    【解决方案2】:

    我的问题是,当我发送 chrome 驱动程序的正确路径时...

    关于 Chrome 及其路径的一条评论...我发现 Chrome 会根据发行版和版本而变化很多。

    这就是我的一段代码的样子。它在 Armbian、Debian、Fedora 和 Ubuntu 上运行良好。

    def get_chrome():
        if os.path.isfile('/usr/bin/chromium-browser'):
            return '/usr/bin/chromium-browser'
        elif os.path.isfile('/usr/bin/chromium'):
            return '/usr/bin/chromium'
        elif os.path.isfile('/usr/bin/chrome'):
            return '/usr/bin/chrome'
        elif os.path.isfile('/usr/bin/google-chrome'):
            return '/usr/bin/google-chrome'
        else:
            return None
    

    然后:

    opts = Options()
    opts.binary_location = get_chrome()
    opts.add_argument('--headless')
    opts.add_argument('--no-sandbox')
    opts.add_argument('--disable-dev-shm-usage')
    
    driver = webdriver.Chrome(chrome_options=opts)
    

    我不使用亚马逊或谷歌云,所以我不知道亚马逊或谷歌在他们的云中或他们的图像中做了什么。我希望 get_chrome() 可以正常工作,除非它是不寻常的配置。

    【讨论】:

      猜你喜欢
      • 2014-09-20
      • 1970-01-01
      • 2022-01-28
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2016-10-07
      相关资源
      最近更新 更多