31 мар. 2013 г.

JS: Примитивный редирект

Если вам нужно средиректить пользователя, через некоторое время, то вы можете воспользоваться этим кодом:
<script type="text/javascript">
window.setTimeout("document.location = 'http://google.com';", 3000);
</script>
P.S. 3000 - 3 секунды.

6 мар. 2013 г.

Python, Selenium, Chrome: Способ задания таймаутов

Selenium отличный инструмент для тестирования web-приложений. Но Firefox очень прожорливый браузер и это чересчур заметно после запуска скриптов на несколько часов.

Приятным удивлением был Chrome/Chromium который заметно быстрей, при той же логике работы. Хотя не без косяков. Насколько мне известно, еще до сих пор в ChromeDriver, для Selenium, нету нормальный таймаутов, при загрузке документа. По крайней мере, встроенный метод set_page_load_timeout постоянно отдавал:
selenium.common.exceptions.WebDriverException: Message: '{"status":405,"value":["GET","HEAD","DELETE"]}' 
Но кое-какое решение нашлось, через модуль socket:
socket.setdefaulttimeout(10)
try:
    driver.get('http://google.com')
except socket.timeout:
    driver.quit()
И это вроде единственный из возможных вариантов, если быть точным, единственный известный мне :) Потому что:

1) Исполнение js, а именно window.stop() не происходит, если страница не загруженная полностью.
2) Внутреннего метода по остановке загрузки документа нету. Так как WebDriver, со слов разработчиков, эмулирует только работу пользователя внутри страницы, а не целого браузера.