猿问

如何在Xvfb中运行Selenium?

如何在Xvfb中运行Selenium?

我在EC2上。所以没有GUI。

$pip install selenium
$sudo apt-get install firefox xvfb

然后我就这么做:

$Xvfb :1 -screen 0 1024x768x24 2>&1 >/dev/null &$DISPLAY=:1 java -jar selenium-server-standalone-2.0b3.jar05:08:31.227 INFO - Java:
 Sun Microsystems Inc. 19.0-b0905:08:31.229 INFO - OS: Linux 2.6.32-305-ec2 i38605:08:31.233 INFO - v2.0 [b3],
  with Core v2.0 [b3]05:08:32.121 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub05:08:32.122 INFO -
   Version Jetty/5.1.x05:08:32.123 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]05:08:32.124 INFO -
    Started HttpContext[/selenium-server,/selenium-server]05:08:32.124 INFO - Started HttpContext[/,/]05:08:32.291 INFO - Started 
    org.openqa.jetty.jetty.servlet.ServletHandler@1186fab05:08:32.292 INFO - Started HttpContext[/wd,/wd]05:08:32.295 INFO - Start
    ed SocketListener on 0.0.0.0:444405:08:32.295 INFO - Started org.openqa.jetty.jetty.Server@1ffb8dc

太好了,现在一切都正常了,对吧?

当我运行我的代码时:

from selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.common.keys 
import Keysbrowser = webdriver.Firefox() browser.get("http://www.yahoo.com")

我明白了:

Error: cannot open display: :0


牧羊人nacy
浏览 992回答 3
3回答

慕盖茨4494581

打开终端并运行以下命令xhost +..每次重新启动计算机时都需要运行此命令。如果一切正常,您可以将其添加到启动命令中。还要确保在/etc/环境文件中有一行export DISPLAY=:0.0然后,运行您的测试,看看您的问题是否得到了解决。在使用之前,请注意下面Sardathrion的评论。

ABOUTYOU

这是我使用的设置:在运行测试之前,执行:export DISPLAY=:99 /etc/init.d/xvfb start在测试之后:/etc/init.d/xvfb stop这个init.d我使用的文件如下所示:#!/bin/bash XVFB=/usr/bin/Xvfb XVFBARGS="$DISPLAY -ac -screen 0 1024x768x16" PIDFILE=${HOME}/xvfb_${DISPLAY:1}.pid case "$1" in   start)     echo -n "Starting virtual X frame buffer: Xvfb"     /sbin/start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $XVFB -- $XVFBARGS     echo "."     ;;   stop)     echo -n "Stopping virtual X frame buffer: Xvfb"     /sbin/start-stop-daemon --stop --quiet --pidfile $PIDFILE     echo "."     ;;   restart)     $0 stop     $0 start     ;;   *)   echo "Usage: /etc/init.d/xvfb {start|stop|restart}"   exit 1 esac exit 0
随时随地看视频慕课网APP
我要回答