我正在尝试使用selenium-rc和来自pear的selenium PHP API设置我的虚拟(xen)win xp实例,专用的Windows服务器和用于Web应用程序UI测试的专用windows xp桌面PC(运行测试的php脚本位于其应用服务器上,与远程控制窗口位于同一本地网络上。
到目前为止,一切都很顺利,除了我无法从selenium RC获取屏幕截图 - 在base64_decode()之后,它们全部空白(灰色) (没有它,他们甚至不打开)。
尽管os x预览显示为灰色,但我很确定它们实际上是透明的还是有某种其他损坏因为Photoshop根本不会打开它们。 (并且它们的重量为0.7k)然而,unix“文件”命令正确地将它们识别为“PNG图像,1440 x 900,8位/彩色RGB,非隔行扫描” - 1440 x 900是我的Mac的分辨率,连接到Windows系统通过远程桌面。
我直接运行selenium rc(即java -jar selenium-server.jar),而不是服务。我的所有Windows测试系统的症状都是一样的。
我的Selenium版本是1.0.1,这是尝试获取屏幕截图的代码段:
$this->selenium->windowMaximize(); $screenshot = $this->selenium->captureScreenshotToString();
我正在使用最新的Testing_Selenium pear包。 我意识到这里有一个问题处理类似的问题,但我没有使用服务包装器,也没有能够介绍这种复杂性(但如果你认为这是一个错误,请告诉我)
谢谢&问候, 安德拉斯
ps:我正在将这个问题交叉发布到几个论坛,我们绝望地试图获得一些支持 - 如果这让你感到不满,我会道歉: - )
编辑:selenium rc控制台说
16:38:24.562 INFO - 在会话a5304a287eb24402上得到结果:[base64编码的PNG] 8c8c843b294bf98f java.net.SocketException:软件导致连接中止:套接字写入错误 at java.net.SocketOutputStream.socketWrite0(Native Method) 在java.net.SocketOutputStream.socketWrite(未知来源) 在java.net.SocketOutputStream.write(未知来源) at org.mortbay.http.ChunkingOutputStream.bypassWrite(ChunkingOutputStrea) m.java:151) 在org.mortbay.http.BufferedOutputStream.write(BufferedOutputStream.java) :142) 在org.mortbay.http.HttpOutputStream.write(HttpOutputStream.java:423) 在org.mortbay.http.HttpOutputStream.write(HttpOutputStream.java:414) 在org.openqa.selenium.server.SeleniumDriverResourceHandler.handleComman dRequest(SeleniumDriverResourceHandler.java:370) 在org.openqa.selenium.server.SeleniumDriverResourceHandler.handle(Selen) iumDriverResourceHandler.java:125) 在org.mortbay.http.HttpContext.handle(HttpContext.java:1530) 在org.mortbay.http.HttpContext.handle(HttpContext.java:1482) 在org.mortbay.http.HttpServer.service(HttpServer.java:909) 在org.mortbay.http.HttpConnection.service(HttpConnection.java:820) 在org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) 在org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) 在org.mortbay.http.SocketListener.handleConnection(SocketListener.java: 245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) 在org.mortbay.util.ThreadPool $ PoolThread.run(ThreadPool.java:534)
用于所有屏幕截图。
答案 0 :(得分:6)
当没有物理桌面(或远程桌面会话)时,运行Selenium RC的Java进程将导致黑屏幕截图。如果不了解更多信息,这可能是您的问题。
作为Selenium RC的创建者,我实际上建议不要完全使用Windows服务。相反,我们在提供free monitoring和free load testing服务的BrowserMob以及最近发布的instant test tool中执行操作,该网站从多个位置截取您网站的屏幕截图。
我们所做的是在VNC会话的上下文中启动所有内容。在Windows上,配置VNC以在启动时启动会话。然后确保用户自动登录。然后将.bat文件放在Program Files-> Startup中,启动Selenium RC。这是一种痛苦,但它是我发现的最可靠的方法,可以确保Selenium RC在支持屏幕截图,启动IE,与本机事件交互等环境中启动。
祝你好运!答案 1 :(得分:1)
你见过similar question吗? 也许这可以帮到你。我有类似的冒险经历。