Я пытаюсь настроить мои виртуальные (xen) экземпляры win xp, выделенный сервер Windows и выделенный настольный ПК Windows XP для тестирования пользовательского интерфейса веб-приложения с использованием selenium-rc и API-интерфейса selenium PHP API от pear ( PHP-скрипт, выполняющий тесты, находится на своем сервере приложений, в той же локальной сети, что и окна с дистанционным управлением).
До сих пор все работало отлично, за исключением того, что я не могу получить снимок экрана с selenium RC - они все пустые (серый) после base64_decode (); (без этого они даже не открываются).
Несмотря на то, что предварительный просмотр os x отображает их в сером цвете, я уверен, что они на самом деле прозрачные или имеют какие-то другие искажения, потому что Photoshop их вообще не открывает. (и они весят 0,7 тыс.). Команда unix «file», однако, правильно распознает их как «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: я кросс-пост публикую это на нескольких форумах в отчаянной попытке получить некоторые извинения, если это вас расстроит: -)
edit: консоль selenium rc сообщает
16: 38: 24.562 INFO - Получен результат: [PNG в кодировке base64] в сеансе a5304a287eb24402
8c8c843b294bf98f
java.net.SocketException: программное обеспечение вызвало прерывание соединения: ошибка записи в сокет
в java.net.SocketOutputStream.socketWrite0 (собственный метод)
на java.net.SocketOutputStream.socketWrite (неизвестный источник)
на java.net.SocketOutputStream.write (неизвестный источник)
в 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)
на org.mortbay.util.ThreadedServer.handle (ThreadedServer.java:357)
в org.mortbay.util.ThreadPool $ PoolThread.run (ThreadPool.java:534)
для всех снимков экрана.