Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 14, 2008 20:12:50

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

Теперь понятно, а то дейсвительно без цели трудно сообразить необходимость. Действительно в вашем случае лучше использовать автоматизацию под какой-нибудь браузер, под IE или FireFox. Кстати к фаерфоксу есть Firebug, может из него можно тянуть состояние переменных js, или еще какую полезную инфу. Покопайте и в этом напралении, там наверняка есть уже что-то сделано.

Офлайн

#2 Янв. 18, 2008 18:31:46

ods
От:
Зарегистрирован: 2007-03-03
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

Ferroman
Теперь понятно, а то дейсвительно без цели трудно сообразить необходимость. Действительно в вашем случае лучше использовать автоматизацию под какой-нибудь браузер, под IE или FireFox. Кстати к фаерфоксу есть Firebug, может из него можно тянуть состояние переменных js, или еще какую полезную инфу. Покопайте и в этом напралении, там наверняка есть уже что-то сделано.
К сожалению, Firefox сложно запускать по cron-у и отсылать отчёты по почте, если есть сбои в работе.



Офлайн

#3 Авг. 19, 2009 14:50:21

topazz
От:
Зарегистрирован: 2008-09-12
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

Апну топик, так как может быть ситуация изменилась и появились либы для полноценной работы с формами.
Т.е. например некоторые поля формы рисуются js.

Я так понимаю сейчас наиболее распространенное решение это mechanize, но он не работает с js.

Спасибо за ответы.



Офлайн

#4 Авг. 19, 2009 17:14:56

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

Посмотри в сторону Selenium IDE

Офлайн

#5 Авг. 19, 2009 18:55:59

Constantine
От:
Зарегистрирован: 2009-08-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

А кто-нибудь может привести нормальный пример, зачем выполнять жаваскрипт в питоне? У меня только два варианта:

1. Тестирование (но для этого есть специальные инструменты, весьма неплохо расширяемые, и незачем писать все с нуля. Тот же WebKing, или какие-нибудь его бесплатные аналоги)
2. Спам (no comments)

Навеяло просто постом про капчу…



Отредактировано (Авг. 19, 2009 18:56:57)

Офлайн

#6 Авг. 20, 2009 11:18:22

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

2Constantine
не знаю как на счет спама, а вот для тестирование очень даже хорошо помогает.

Пользовал selenium. Писал регрессионые тесты для аяксовых страничек. Остался доволен, так что если установка java не пугает - рекомендую, клиент для питона у selenium имеется, плюс плагин для файрфокса для автоматического написания тестов.



Офлайн

#7 Авг. 20, 2009 17:36:33

Constantine
От:
Зарегистрирован: 2009-08-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

ziro
2Constantine
не знаю как на счет спама, а вот для тестирование очень даже хорошо помогает.

Пользовал selenium. Писал регрессионые тесты для аяксовых страничек. Остался доволен, так что если установка java не пугает - рекомендую, клиент для питона у selenium имеется, плюс плагин для файрфокса для автоматического написания тестов.
Selenium не выполняет javascript - ни в Python, ни в Java. Хотя для решения задачи топикстартера подходит.



Отредактировано (Авг. 20, 2009 17:38:19)

Офлайн

#8 Окт. 10, 2009 17:17:29

elakeri
От:
Зарегистрирован: 2009-10-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

Всем привет. Я пока вообще молодой (но пытливый) петонсчег. Собственно, у меня, если я правильно понял автора, возникла аналогичная задача. Для тех, кто не понимает цель, попытаюсь объяснить. Есть сайт, на котором, после аутентификации, у пользователя существует возможность проголосовать (поднять рейт) сайта на другом сайте. Изначально сайт был сделан таким образом, что при аутентификации с одной машины нескольких пользователей, он позволял провести голосование всем. Однако, когда на сайте начали появляться пользователи с именем 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'у) соответствующих параметров, и получить после его выполнения результат, на основе которого уже сформировать новый запрос.



Офлайн

#9 Окт. 11, 2009 02:46:56

elakeri
От:
Зарегистрирован: 2009-10-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

Моя задача решилась с помощью from zope.testbrowser.browser import Browser… Дальше смотрите мануалы. Если кому интересно могу выложить свой нубский код.



Офлайн

#10 Окт. 11, 2009 02:57:01

elakeri
От:
Зарегистрирован: 2009-10-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение Javascript на Python

И несколько слов по поводу того, как, независимо от того какой IP я использую, сайт “узнаёт”, что я сижу за одной машиной. У меня на персоналке две сетевухи. Переключая сеть из одной в другую всё нормально работает. Теперь вопрос (хотя и оффтоп): как удалённый веб-сервер может узнать мой MAC-адрес? Неужели там стоит анализатор IP трафика или есть ещё какие-то варианты защиты? Гуру, поделитесь драгоценными знаниями, я ещё пригожусь :-)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version