我正在尝试使用 selenium-rc 和 pear 的 selenium PHP API(运行的 php 脚本测试位于其应用服务器上,与远程控制的窗口位于同一本地网络上)。
到目前为止,一切都很好,除了我无法从 selenium RC 获取屏幕截图 - 在 base64_decode(); 之后它们都是空白(灰色);(没有那个,他们甚至不打开)。
尽管 os x preview 将它们显示为灰色,但我很确定它们实际上是透明的或有某种其他损坏,因为 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:我将这个帖子交叉发布到几个论坛,以拼命尝试获得一些影响 - 如果这让你感到不安,我深表歉意:-)
编辑:硒 rc 控制台说
16:38:24.562 信息 - 得到结果:会话 a5304a287eb24402 8c8c843b294bf98f java.net.SocketException 上的 [base64 编码 PNG]:软件导致连接中止:java.net 上的 java.net.SocketOutputStream.socketWrite0(本机方法)的套接字写入错误。 SocketOutputStream.socketWrite(Unknown Source) at java.net.SocketOutputStream.write(Unknown Source) at org.mortbay.http.ChunkingOutputStream.bypassWrite(ChunkingOutputStrea m.java:151) at org.mortbay.http.BufferedOutputStream.write(BufferedOutputStream. java :142) at org.mortbay.http.HttpOutputStream.write(HttpOutputStream.java:423) at org.mortbay.http.HttpOutputStream.write(HttpOutputStream.java:414) at org.openqa.selenium.server.SeleniumDriverResourceHandler.handleComman dRequest(SeleniumDriverResourceHandler.java:370) 在 org.openqa。selenium.server.SeleniumDriverResourceHandler.handle(Selen iumDriverResourceHandler.java:125) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at 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) 在 org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357 ) 在 org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)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) at org.mortbay.util.ThreadPool$PoolThread.run 在 org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) 在 org.mortbay.http.SocketListener.handleConnection(SocketListener.java: 245) (线程池.java:534)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) at org.mortbay.util.ThreadPool$PoolThread.run 在 org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) 在 org.mortbay.http.SocketListener.handleConnection(SocketListener.java: 245) (线程池.java:534)org.mortbay.http.HttpConnection.service(HttpConnection.java:820) org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) org.mortbay.http.HttpConnection 的服务(HttpServer.java:909) .handle(HttpConnection.java:837) 在 org.mortbay.http.SocketListener.handleConnection(SocketListener.java: 245) 在 org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) 在 org.mortbay.util。 ThreadPool$PoolThread.run(ThreadPool.java:534)org.mortbay.http.HttpConnection.service(HttpConnection.java:820) org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) org.mortbay.http.HttpConnection 的服务(HttpServer.java:909) .handle(HttpConnection.java:837) 在 org.mortbay.http.SocketListener.handleConnection(SocketListener.java: 245) 在 org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) 在 org.mortbay.util。 ThreadPool$PoolThread.run(ThreadPool.java:534)org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 上的 util.ThreadedServer.handle(ThreadedServer.java:357)org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 上的 util.ThreadedServer.handle(ThreadedServer.java:357)
对于所有屏幕截图。