我正在尝试使用 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
我尝试过的事情:
- 尝试在没有显示的情况下运行硒(pyvirtualdisplay),即无头硒
- 在调用 webdriver.firefox() 时尝试了二进制参数
- 在 webdriver.firefox() 中尝试了 geckodriver 可执行文件(linux)
- used
export Dispaly=:0;
在 cron cmd 中
更新最新的 geckodriver
下载最新的 Firefox tarball 并按照此步骤操作
https://tecadmin.net/install-firefox-on-linux/ https://tecadmin.net/install-firefox-on-linux/
3.安装官方Firefox Beta PPA
$ sudo apt-add-repository ppa:mozillateam/firefox-next
4.运行apt-get更新
$sudo apt-get update
-
安装 firefox 和 xvfb(X windows 虚拟帧缓冲区)软件包
$ sudo apt-get install firefox xvfb
-
在后台运行 Xvfb 并指定显示编号(在我的示例中为 10)
$ Xvfb :10 -ac &
-
将 DISPLAY 变量设置为您选择的数字
$ export DISPLAY=:10
- 测试代码
#!/usr/bin/env python
从硒导入网络驱动程序
浏览器 = webdriver.Firefox()
浏览器.get('http://iAisystem.com/ http://iAisystem.com/')
browser.quit()
firefox 如果您下载为 tar 它有助于避免下载依赖文件
wget http://ftp.mozilla.org/pub/firefox/releases/61.0/linux-x86_64/en-US/firefox-61.0.tar.bz2
请注意,您的 Firefox 代码应该具有无头选项,以避免显示窗口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)