如何让Sikuli在无头模式下工作

时间:2014-09-25 07:11:29

标签: testing automation automated-tests sikuli headless

如果我们有一个运行sikuli的无头测试服务器(需要ubuntu和windows配置),如何在没有物理监视器的情况下使其工作,并且最好是尽可能多的屏幕分辨率。

3 个答案:

答案 0 :(得分:25)

我成功地让sikuli以无头模式运行(没有连接物理监视器)

Ubuntu:检查Xvfb。

Windows:从虚拟机来宾添加显示驱动程序在机器上安装显示驱动程序(无头),并使用TightVNC从另一台计算机远程设置分辨率。

Windows 7的详细步骤

假设:

  1. 机器A:无头机器,Windows 7,vnc服务器就绪(例如TightVNC服务器已安装并等待连接)。
  2. 机器B:将用于远程设置机器A上的虚拟显示驱动程序。
  3. 步骤进行:

    1. here下载机器A上的virtualbox guest additions iso文件(最新版本检查最新版本here并下载VBoxGuestAdditions_x.y.z.iso) enter image description here
    2. 将iso文件(可能带有winrar)解压缩到一个目录中(我们称之为文件夹D) enter image description here
    3. 使用命令提示符cd到D文件夹
    4. 驱动程序提取

      - 要将32位驱动程序解压缩到“C:\ Drivers”,请执行以下操作:

      • VBoxWindowsAdditions-x86 / extract / D = C:\ Drivers

      - 对于64位驱动程序:

      • VBoxWindowsAdditions-amd64 / extract / D = C:\ Drivers

      drivers extracted

    5. 转到设备管理器 my computer/manage

    6. 添加硬件enter image description here

    7. List item

    8. List item

    9. List item

    10. List item

    11. List item

    12. List item

    13. List item

    14. List item

    15. List item

    16. 重新启动并与VNC查看器连接,现在您应该可以更改屏幕分辨率 enter image description here

    17. 关于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从属服务器作为用户进程而不是服务来运行...这可以通过启用自动管理员登录并将从属启动脚本设置为运行来实现(在登录)命令。