为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Xvfb中运行Selenium?

如何在Xvfb中运行Selenium?

牧羊人nacy 2019-07-03 14:34:35
如何在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
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

打开终端并运行以下命令xhost +..每次重新启动计算机时都需要运行此命令。如果一切正常,您可以将其添加到启动命令中。

还要确保在/etc/环境文件中有一行

export DISPLAY=:0.0

然后,运行您的测试,看看您的问题是否得到了解决。

在使用之前,请注意下面Sardathrion的评论。


查看完整回答
反对 回复 2019-07-03
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

这是我使用的设置:

在运行测试之前,执行:

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


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 991 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信