Answers:
您正在寻找的是 无头浏览器。
是的,有可能在Firefox上无头运行Selenium。这是您可以关注的帖子。
这是设置Xvfb的摘要步骤
#install Xvfb
sudo apt-get install xvfb
#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99
#you are now having an X display by Xvfb
Xvfb
,而不是用于安装和配置Selenium(这需要geckodriver
在路径上进行)。
subprocess.Popen('Xvfb...')
或os.system('Xvfb...')
来执行此操作,但请确保在导入webdriver之前先执行此操作。
Chrome现在具有无头模式:
op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)
是。您可以使用HTMLUnitDriver
,而不是用于FirefoxDriver
同时启动的webdriver。这是无头的浏览器设置。详细信息可以在这里找到。
如果您需要无头浏览器支持,则可以采用另一种方法。
https://github.com/detro/ghostdriver
它在Selenium会议期间宣布,目前仍在开发中。它使用PhantomJS作为浏览器,并且比HTMLUnitDriver更好,还没有截图,但是由于它仍在积极开发中。
可选的是这样使用pyvirtualdisplay
:
from pyvirtualdisplay import Display
display = Display(visible=0, size=[800, 600])
display.start()
#do selenium job here
display.close()
较短的版本是:
with Display() as display:
# selenium job here
这通常是的python封装xvfb
,并且以某种方式更方便。
顺便说一句,尽管PhantomJS
它是无头浏览器,如果您使用它,则不会打开任何窗口,但似乎PhantomJS
仍需要使用gui环境。
当我在无头模式(使用putty连接的控制台)中使用PhantomJS()
而不是时,出现错误代码-6 Firefox()
。但是,在桌面环境中一切正常。
更新:您不再需要XVFB来运行无头Firefox。Linux上的Firefox v55 +和Windows / Mac上的Firefox v56 +现在支持无头执行。
我在这里添加了一些使用方法文档:
https://developer.mozilla.org/zh-CN/Firefox/Headless_mode#Selenium_in_Java
另一个选择是GhostDriver,现在WebDriver正式支持它:Ghostdriver的实际性能提升
安装并运行容器化的Firefox:
docker pull selenium/standalone-firefox
docker run --rm -d -p 4444:4444 --shm-size=2g selenium/standalone-firefox
使用连接webdriver.Remote
:
driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.FIREFOX)
driver.set_window_size(1280, 1024)
driver.get('https://www.google.com')