我花了好几个小时试图让Selenium与Python合作没有运气
此错误消息
selenium.common.exceptions.WebDriverException: Message: connection refused
这是我用过的例子: -
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Firefox()
browser.get('http://www.python.org')
browser.close()
这是我的安慰
apt-get install -y xorg xvfb dbus-x11 xfonts-100dpi xfonts-75dpi xfonts-cyrillic
这是/root/geckodriver.log
输出
1493938773101 geckodriver INFO在127.0.0.1:40876上收听 1493938774156 geckodriver :: marionette INFO启动浏览器 /usr/lib/firefox/firefox.sh与args [“-marionette”](firefox:3128): GLib-GObject-CRITICAL **:g_object_ref:断言'object-> ref_count> 0'失败
我在Ubuntu 14.04 64-bit
VPS远程服务器上运行Selenium,内存为128MB
我无法弄清楚是什么让Selenium无法与浏览器驱动程序Chrome和Firefox进行通信。
答案 0 :(得分:4)
请先查看“firefox”浏览器版本。
我发现它在某些方面非常令人困惑。我正在使用Raspbian,并且使用apt-get下载的“Iceweasel”是一个Firefox 52版本,它与geckodriver 0.19不兼容(这个需要Firefox 55或更高版本)。
对我来说有用的是下载geckorvider v0.16并解决了这个问题。
此外,您可能不需要xorg来使其工作,我需要的唯一软件包是xfvb和iceweasel。
答案 1 :(得分:2)
好的,我放弃了Geckodriver
,我使用PhantomJS
作为我的网络驱动程序。
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
driver = webdriver.PhantomJS()
driver.get('http://www.python.org')
html_source = driver.page_source
print ("html_source:",html_source)
driver.quit()
以下是我用于安装PhantomJS的步骤:
cd ~
export PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
tar xvjf $PHANTOM_JS.tar.bz2
mv $PHANTOM_JS /usr/local/share
ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
Python Selenium
apt-get install python-pip -y
pip uninstall pyvirtualdisplay
apt-get install x11vnc xvfb fluxbox
Xvfb :99 -ac
xvfb-run -a python 99.py
pip uninstall selenium
pip install selenium==2.53.1