Selenium RC отправляет пустые скриншоты через (winxp / winserver) - PullRequest
2 голосов
/ 16 ноября 2009

Я пытаюсь настроить мои виртуальные (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)

для всех снимков экрана.

Ответы [ 2 ]

6 голосов
/ 16 ноября 2009

Если нет физического рабочего стола (или сеанса удаленного рабочего стола), процесс Java, который запускает Selenium RC, приведет к черному снимку экрана. Не зная больше информации, это может быть вашей проблемой.

Как создатель Selenium RC, я на самом деле не рекомендую полностью использовать Службу Windows. Вместо этого делайте то, что мы делаем на BrowserMob, который предоставляет бесплатный мониторинг и бесплатное тестирование нагрузки сервисов, а также недавно запущенный инструмент мгновенного тестирования , который делает снимки экрана Ваш сайт из нескольких мест.

Мы запускаем все из контекста VNC сеанса. В Windows настройте VNC для запуска сеанса при запуске. Затем убедитесь, что пользователь входит в систему автоматически. Затем поместите файл .bat в Program Files-> Startup, который запускает Selenium RC. Это своего рода боль, но это самый надежный способ, который я нашел для обеспечения того, чтобы Selenium RC запускался в среде, поддерживающей скриншоты, запуска IE, взаимодействия с нативными событиями и т. Д.

Удачи!

1 голос
/ 16 ноября 2009

Вы видели похожий вопрос ? Может быть, это могло бы помочь вам. У меня были похожие приключения.

...