如果我们有一个运行sikuli的无头测试服务器(需要ubuntu和windows配置),如何在没有物理监视器的情况下使其工作,并且最好是尽可能多的屏幕分辨率。
答案 0 :(得分:25)
我成功地让sikuli以无头模式运行(没有连接物理监视器)
Ubuntu:检查Xvfb。
Windows:从虚拟机来宾添加显示驱动程序在机器上安装显示驱动程序(无头),并使用TightVNC从另一台计算机远程设置分辨率。
Windows 7的详细步骤
假设:
步骤进行:
驱动程序提取
- 要将32位驱动程序解压缩到“C:\ Drivers”,请执行以下操作:
- 对于64位驱动程序:
转到设备管理器
添加硬件
重新启动并与VNC查看器连接,现在您应该可以更改屏幕分辨率
关于launchpad的其他重要信息。
答案 1 :(得分:1)
对于那些希望在ec2 windows机器上实现自动化的人来说,这对我有用:http://www.allianceglobalservices.com/blog/executing-automation-suite-on-disconnectedlocked-machines
总之,我使用RDC进行连接,将以下代码放在远程桌面上的批处理文件中,双击它,然后sikulix开始远程工作(同时将我踢出RDC)。请注意,当tscon接管时,ec2 windows机器默认为1024x768,这可能太小,因此在运行之前可以使用TightVnc将分辨率提高到1280x1024。
tscon.exe 0 /dest:console
tscon.exe 1 /dest:console
tscon.exe 2 /dest:console
tscon.exe 3 /dest:console
START /DC:\Sikulix /WAIT /B C:\Sikulix\runsikulix.cmd -d 3 -r C:\test.sikuli -f C:\Sikulix\log.txt -d C:\Sikulix\userlog.txt
答案 2 :(得分:1)
我让SikuliX在带有Windows 2016客户端系统的GCE中以真正的无头模式工作。它需要一些胶带和其他Rube Goldberg装置才能工作,但是可以做到。
问题在于,对于GCE(可能还有AWS和其他云环境Windows客户端),您没有虚拟视频适配器和显示,因此,除非与客户端建立开放的RDP连接,否则它不会有一个屏幕,SikuliX / OpenCV将获得一个1024x768黑色桌面,并且失败。
所以,问题是,如何在没有实际屏幕的情况下创建RDP连接。我使用Xvfb(X Windows虚拟帧缓冲区)进行了此操作。不过,这确实需要第二个VM。 Xvfb在Linux上运行。另一个难题是xfreerdp 2.0。为了与Windows的最新版本兼容,需要2.x版本。 1.x包含在某些Linux发行版中; 2.x可能需要从源代码构建,具体取决于您所使用的Linux版本。我正在使用CentOS,这确实需要我自己构建。
建立无头RDP会话的命令,一旦完成,看起来像这样:
/usr/bin/Xvfb :0 -screen 0 1920x1080x24 &
export DISPLAY=:0.0
/usr/local/bin/xfreerdp /size:1920x1080 /u:[WindowsUser] /p:"[WindowsPassword]" /v:[WindowsTarget]
在我们的环境中,作为詹金斯(Jenkins)启动的构建工作的一部分,我们将其自动化。为了使它在Jenkins从属服务器下工作,还必须将Jenkins从属服务器作为用户进程而不是服务来运行...这可以通过启用自动管理员登录并将从属启动脚本设置为运行来实现(在登录)命令。