2014-01-19 5 views
1

выпуска:Python - Передача сеанса между двумя браузерами

Я написал кучу кода (автоматизировать некоторые довольно трудоемкие задачи в Интернете), и использовали библиотеку механизировать для Python для обработки сетевых запросов. Он работает очень хорошо, за исключением того, что теперь я столкнулся с страницей, которая мне нужна javascript функциональность ... механизация не обрабатывает javascript.

Предлагаемое решение:

Я использую PyQt писать GUI для этого приложения, и поставляется в комплекте с QtWebKit, который делает обрабатывать javascript. Я хочу использовать QtWebKit, чтобы оценить javascript на странице, на которой я застрял, и самый простой способ сделать это - перенести мою веб-сессию с механизации на QtWebKit.

Я НЕ хочу использовать PhantomJS, Selenium, или QtWebKit для всей моей веб-заявки; Я 100% хочу продолжать механизировать для этой цели. Мне интересно, как я могу перенести мою регистрацию в сеансе от механизации до QtWebKit.

Будет ли это работать?

  • Передача все печенье из Mechanize в QtWebView
  • Перенесите значения всех переменных состояния (как _VIEWSTATE и т.д.) от Mechanize к QWebView (страница является ASP.net страница ...)
  • Изменить заголовок User-Agent в QWebView быть идентичен механизировать ...

Я не очень понимаю, как я мог бы сделать два «браузеры» появляются более идентичны с сервером ... woul d эта работа? Благодаря!

ответ

0

Поскольку никто не ответил, я опубликую свою работу.

В принципе, я хотел «перенести» свою сессию из модуля Mechanize (модуль python) в QtWebKits QWebView (модуль PyQt4), потому что подавляющая часть моего проекта была автоматизирована без головы, но я столкнулся с дорожным блоком, где у меня не было но для того, чтобы пользователь вручную вводил данные в возможную итоговую страницу (поскольку форма была различной каждый раз в зависимости от обстоятельств).

Вместо передачи сеансов Я выполнил это требование, используя функциональность javascript QWebViews. Мой метод пошел, как это:

  1. загрузки страницы в Mechanize и сохранить загруженный HTML в локальный временный файл.
  2. Загрузить этот файл в QWebView.
  3. Теперь пользователь может ввести необходимые данные в локальную копирование с этой страницы.
  4. Найдите поля формы на этой странице и потяните данные, введенные пользователем, используя javascript. Вы можете сделать это, получив основной объект рамки для страницы (QWebView-> Page() -> MainFrame()), а затем оценивая код javascript для выполнения вышеуказанной задачи (используйте оценкуJavaScript()).
  5. Возьмите данные, которые вы извлекли из полей формы, и используйте их для отправки формы с подключением, которое вы все еще открываете с помощью механизации.

Вот и все! Немного обход, но он не работает: \