Форум сайта python.su
Теперь понятно, а то дейсвительно без цели трудно сообразить необходимость. Действительно в вашем случае лучше использовать автоматизацию под какой-нибудь браузер, под IE или FireFox. Кстати к фаерфоксу есть Firebug, может из него можно тянуть состояние переменных js, или еще какую полезную инфу. Покопайте и в этом напралении, там наверняка есть уже что-то сделано.
Офлайн
FerromanК сожалению, Firefox сложно запускать по cron-у и отсылать отчёты по почте, если есть сбои в работе.
Теперь понятно, а то дейсвительно без цели трудно сообразить необходимость. Действительно в вашем случае лучше использовать автоматизацию под какой-нибудь браузер, под IE или FireFox. Кстати к фаерфоксу есть Firebug, может из него можно тянуть состояние переменных js, или еще какую полезную инфу. Покопайте и в этом напралении, там наверняка есть уже что-то сделано.
Офлайн
Апну топик, так как может быть ситуация изменилась и появились либы для полноценной работы с формами.
Т.е. например некоторые поля формы рисуются js.
Я так понимаю сейчас наиболее распространенное решение это mechanize, но он не работает с js.
Спасибо за ответы.
Офлайн
Посмотри в сторону Selenium IDE
Офлайн
А кто-нибудь может привести нормальный пример, зачем выполнять жаваскрипт в питоне? У меня только два варианта:
1. Тестирование (но для этого есть специальные инструменты, весьма неплохо расширяемые, и незачем писать все с нуля. Тот же WebKing, или какие-нибудь его бесплатные аналоги)
2. Спам (no comments)
Навеяло просто постом про капчу…
Отредактировано (Авг. 19, 2009 18:56:57)
Офлайн
2Constantine
не знаю как на счет спама, а вот для тестирование очень даже хорошо помогает.
Пользовал selenium. Писал регрессионые тесты для аяксовых страничек. Остался доволен, так что если установка java не пугает - рекомендую, клиент для питона у selenium имеется, плюс плагин для файрфокса для автоматического написания тестов.
Офлайн
ziroSelenium не выполняет javascript - ни в Python, ни в Java. Хотя для решения задачи топикстартера подходит.
2Constantine
не знаю как на счет спама, а вот для тестирование очень даже хорошо помогает.
Пользовал selenium. Писал регрессионые тесты для аяксовых страничек. Остался доволен, так что если установка java не пугает - рекомендую, клиент для питона у selenium имеется, плюс плагин для файрфокса для автоматического написания тестов.
Отредактировано (Авг. 20, 2009 17:38:19)
Офлайн
Всем привет. Я пока вообще молодой (но пытливый) петонсчег. Собственно, у меня, если я правильно понял автора, возникла аналогичная задача. Для тех, кто не понимает цель, попытаюсь объяснить. Есть сайт, на котором, после аутентификации, у пользователя существует возможность проголосовать (поднять рейт) сайта на другом сайте. Изначально сайт был сделан таким образом, что при аутентификации с одной машины нескольких пользователей, он позволял провести голосование всем. Однако, когда на сайте начали появляться пользователи с именем golos001, golos002, golos003 и т.д. лавочку прикрыли. Теперь с одной машины можно голосовать только один раз. Хорошо, думаю я. Значит прочухали и вычисляют IP. Создал свою виртуальную сеть за роутером со статическим внешним IP, и менял локальный IP на одной машине. Это работало ещё некоторое время, но потом и эту схему прочухали. Теперь, меняя IP сайт просекает (не совсем понятным пока для меня образом), что я работаю с одной машины. При этом делались различные зачистки кэша браузера (куки и прочая хрень) менялись также сами браузеры (FF, IE, Chrome), но всё-равно каким-то непонятным образом сайт “видит”, что это один и тот же комп. Последнее решение, которое у меня имеется это воспользоваться возможностью использовать 43 сервера с внешними IP адресами. Я проверил и сейчас это работает. Но остался вопрос как это дело автоматизировать. Эти 43 сервера - линуксовые машины (CentOS), работающие без xserver'а, т.е. гуёвые приложения (например, тот же FF) на них запустить нельзя (в связи с этим вариант с selenium отпадает). Однако текстовые браузеры (типа elinks) работают нормально (собственно на нём и проверялась тема с golos01-43).
Чистый питоновский код, который я планировал использовать может коннектиться логиниться, работать с cookie и т.п. Однако в момент нажатия на кнопку (условно) “голосовать”, javascript генерит ссылку типа http://somesite.com/asdf098uasdf89asd9f8ad9fads9676afsdf . Вот в связи с этой ссылкой, которую генерит javascript и возникает проблема выполнить этот javascript и получить от него эту ссылку.
Пока копаю в направлении возможности автоматизировать работу на elinks. Автор темы, если я правильно понял, ищет библиотеку которая может выполнить javascript при передаче ему (javascript'у) соответствующих параметров, и получить после его выполнения результат, на основе которого уже сформировать новый запрос.
Офлайн
Моя задача решилась с помощью from zope.testbrowser.browser import Browser… Дальше смотрите мануалы. Если кому интересно могу выложить свой нубский код.
Офлайн
И несколько слов по поводу того, как, независимо от того какой IP я использую, сайт “узнаёт”, что я сижу за одной машиной. У меня на персоналке две сетевухи. Переключая сеть из одной в другую всё нормально работает. Теперь вопрос (хотя и оффтоп): как удалённый веб-сервер может узнать мой MAC-адрес? Неужели там стоит анализатор IP трафика или есть ещё какие-то варианты защиты? Гуру, поделитесь драгоценными знаниями, я ещё пригожусь :-)
Офлайн