2010-07-12 3 views
-1

Я пытаюсь получить скриншоты с веб-страницы с несколькими браузерами. Просто экспериментировал с Selenium RC, я написал такой код:Сделайте снимок экрана с Selenium: WaitForPageToLoad не ждет достаточно долго

var sel = new DefaultSelenium(server, 4444, target, url); 
sel.Start(); 
sel.Open(url); 
sel.WaitForPageToLoad("30000"); 
var imageString = sel.CaptureScreenshotToString(); 

В основном это работает, но в большинстве случаев скриншот пустого окна браузера, поскольку страница еще не готова для показа. Это работает, если я добавляю сон сразу после WaitForPageToLoad, но это замедляет работу быстрых браузеров и/или может быть коротким для более медленных браузеров (или под нагрузкой).

Типичным решением для этого, похоже, является ожидание присутствия определенного элемента. Однако это подразумевается как простое общее решение для получения снимка экрана локальной веб-страницы с максимально возможным количеством браузеров (для проверки макета), и я не хочу вводить имена определенных элементов или что-то еще. Это простой инструмент, когда вы просто вводите URL-адрес сервера Selenium и URL-адрес, который хотите протестировать, и возвращайте скриншоты.

Любые советы?

+0

Я только что пробовал с Selenium Server 2.0 Alpha 5 и, похоже, работает в Opera, Internet Explorer и Chrome. Однако он не работал надежно на Firefox. Вздох. – OregonGhost

ответ

0

Я использую Selenium-RC для захвата снимков удаленных страниц, где время ожидания является вариантом. В таких случаях проверка заголовка страницы и использование time.sleep (n секунд) обычно делает это для меня.

+0

Я столкнулся с той же проблемой, не знаю, как проверить страницу, которая еще не отображается. Я могу поставить точку ожидания для объекта, используя «Is Element present», но как это сделать для окна, поскольку в селене нет команды «window exist». Я использую: <нажмите на ссылку в 1-й странице> <Я должен положить синхронизации ждать здесь, пока на дисплее 2 страница> selenium.SelectWindow ("окно Nme "); selenium.IsElementPresent ("object"); ' Мой код не работает из-за второго окна, требующего времени для загрузки. Я использую селен RC с C#. – Vas

0

Возможно, вы можете использовать строку состояния браузера, чтобы проверить, загружена ли эта страница полностью или нет. Я думаю, что это лучшее решение.

Смежные вопросы