我想在 Hudson 从属服务器上运行 selenium 测试。
执行 selenium 的从属服务器(即机器)是 Ubuntu 10.04。
因此它有 Gnome。Selenium 需要 Firefox 才能运行。
Hudson 现在所做的是,它创建与 Ubuntu 计算机的 ssh 连接并在那里启动 selenium。Selenium 尝试启动 Firefox。
现在它指责:
错误:无法打开显示
需要做什么才能让‘ssh shell’从 X-server 获取显示?
答案1
确保远程机器已启用 ssh X11 转发:
$ grep X11 /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
$
用于ssh -X user@remote_machine
连接到远程计算机。如果在远程计算机上您使用不同的用户启动 X 客户端,请使用xauth list
获取 ssh 用户中的当前凭据,然后使用xauth add
将凭据添加到您要通过 sudo/su 成为的用户。
read -p 'Username: ' u;sudo -H -u $u xauth add $(xauth list|grep :$(echo ${DISPLAY: -4:2}));sudo su - $u
答案2
如果问题是我认为的
ssh testuser@ubuntuhost firefox --display :0 -no-remote
将在以下位置启动 Firefoxubuntu主机并让它显示在该机器上,假设测试用户登录到ubuntu主机已经。
我不知道 Selenium,也不知道您到底想测试什么(性能、显示的正确性,或者只是某些 javascript 的成功返回值),但您甚至可能不需要“真正的”X 服务器,即实际出现在 Ubuntu 主机监视器上的服务器。Xvfb 可能对您有帮助,但这超出了原始问题的范围……
答案3
您需要启用 X 转发,并在本地运行 X 服务器。将-X
或-Y
传递给ssh
。
答案4
您需要通过 ssh 隧道转发 X,请尝试以下操作:
ssh -X 主机IP
一旦登录,在您的终端中启动 Firefox,它会将您的 X 服务器转发到您的本地机器。