错误:GDK_BACKEND与可用显示不匹配;使用Crontab运行Selenium

问题描述 投票:2回答:1

我正在尝试使用cron运行selenium。

import os
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from pyvirtualdisplay import Display
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True


firefox_capabilities['handleAlerts'] = True
firefox_capabilities['acceptSslCerts'] = True
firefox_capabilities['acceptInsecureCerts'] = True

binary = webdriver.firefox.firefox_binary.FirefoxBinary("/usr/bin/firefox")

now = datetime.datetime.now()
print "* Time of RUN : ",now

display = Display(visible=0, size=(1024, 768))
# display.start()
browser = webdriver.Firefox(firefox_binary=binary,executable_path=os.getcwd()+'/geckodriver')
browser.get('http://www.google.com')
print browser.title
browser.quit()

# display.stop()

以下是geckodriver.log中显示的错误

1525859641163   geckodriver INFO    geckodriver 0.20.1
1525859641167   geckodriver INFO    Listening on 127.0.0.1:34837
1525859642167   mozrunner::runner   INFO    Running command: "/usr/bin/firefox" "-marionette" "-profile" "/tmp/rust_mozprofile.1xUlJhxoO4Ar"
Error: GDK_BACKEND does not match available displays

things I tried:

  1. 尝试运行没有显示的硒(pyvirtualdisplay),即无头硒
  2. 在调用webdriver.firefox()时尝试二进制参数
  3. 在webdriver.firefox()中试过geckodriver可执行文件(linux)
  4. 在cron cmd中使用了export Dispaly=:0;
python firefox selenium-webdriver cron
1个回答
1
投票
  1. 更新最新的geckodriver
  2. 下载最新的firefox tarball并按照此步骤操作

https://tecadmin.net/install-firefox-on-linux/

3.安装官方Firefox Beta PPA

  $ sudo apt-add-repository ppa:mozillateam/firefox-next

4.Run apt-get update

 $sudo apt-get update
  1. 安装firefox和xvfb(X windows虚拟帧缓冲区)包 $ sudo apt-get install firefox xvfb
  2. 在后台运行Xvfb并指定显示编号(在我的示例中为10) $ Xvfb :10 -ac &
  3. 将DISPLAY变量设置为您选择的数字 $ export DISPLAY=:10
  4. 从selenium import webdriver browser = webdriver.Firefox()browser.get('http://iAisystem.com/')browser.quit()测试代码#!/ usr / bin / env python

如果你下载tar作为tar它有助于避免下载依赖文件

    wget http://ftp.mozilla.org/pub/firefox/releases/61.0/linux-x86_64/en-US/firefox-61.0.tar.bz2

注意你的firefox代码应该有无头选项,以避免显示窗口。

© www.soinside.com 2019 - 2024. All rights reserved.