我想在哈德逊奴隶上运行seleniumtesting。
执行selenium的奴隶(即机器)是Ubuntu 10.04。
因此它有Gnome。 selenium需要一个Firefox运行。
哈德森现在所做的是创build一个与Ubuntu机器的ssh连接,并在那里启动selenium。 selenium试图启动一个Firefox。
现在它指责:
错误:无法打开显示
需要做什么,'ssh shell'从X服务器获取显示?
确保远程机器已启用ssh X11转发:
$ grep X11 /etc/ssh/sshd_config X11Forwarding yes X11DisplayOffset 10 $
使用ssh -X user@remote_machine连接到远程机器。 如果在远程计算机上使用不同的用户来启动X客户端,请使用xauth list来获取ssh用户中的当前凭证,然后使用xauth add将凭证xauth add到使用sudo / su变成的用户。
read -p 'Username: ' u;sudo -H -u $u xauth add $(xauth list|grep :$(echo ${DISPLAY: -4:2}));sudo su - $u
如果问题是我认为的问题
ssh testuser@ubuntuhost firefox --display :0 -no-remote
将在ubuntuhost上启动firefox并将其显示在该机器上,假设testuser已经login到ubuntuhost 。
我不知道Selenium,或者你想要testing什么(性能,显示的正确性,或者简单地说来自某个javascript的成功返回值),但是你甚至可能不需要一个“真正的”X服务器,也就是说,出现在Ubuntu主机的监视器上。 Xvfb可能对你有所帮助,但这超出了原始问题的范围。
您需要启用X转发,并在本地运行X服务器。 将-X或-Y传给ssh 。
ssh -X root @ myserver或类似的东西
你需要通过SSH隧道转发X,试试这个:
ssh -X host_IP
一旦login,在你的terminal启动firefox,它应该转发你的X服务器到本地机器。