Как программно вбить логин и пароль?

Есть такой код:
#coding:utf-8

import wx
import sys
import time
import cefpython

class MainFrame(wx.Frame):

    browser = None

    def __init__(self):
        wx.Frame.__init__(self, parent=None, id=wx.ID_ANY, title='wxPython example', size=(1000,800))
        self.browser = cefpython.CreateBrowser(self.GetHandle(), browserSettings={}, navigateURL="http://ru.grepolis.com")        
        

class MyApp(wx.App):
    timer = None
    timerID = 1

    def OnInit(self):
        cefpython.Initialize()
        sys.excepthook = cefpython.ExceptHook

        self.timer = wx.Timer(self, self.timerID)
        self.timer.Start(10) # 10ms
        wx.EVT_TIMER(self, self.timerID, self.OnTimer)
        
        frame = MainFrame()
        self.SetTopWindow(frame)
        frame.Show()
        
        return True

    def OnTimer(self, event):

        cefpython.SingleMessageLoop()

app = MyApp()
app.MainLoop()



Он открывает страницу online игры Grepolis.

Специально создал тестовый АКК:

Логин: Sudorei

Пароль: 26102012


Каким способом можно программно пройти авторизацию?

Разработчик сообщает, что можно с помощью JavaScript, а как именно я не пойму… Как связать?

Помогите пожалуйста…
  • Вопрос задан
  • 5004 просмотра
Пригласить эксперта
Ответы на вопрос 4
nochkin
@nochkin
Логин и пароль передаются формой либо через POST (чаще всего), либо через GET.
Достаточно посмотреть какие поля передаются при логине и передать такие же в скрипте.

Конкретно с cefpython как это сделать я не скажу, но, например, попробовать через navigateURL.
Хотя, если посмотреть документацию на cefpython, то было было классно использовать SendKeyEvent, SendMouseClickEvent и типа того, но модуль еще достаточно сырой и такие фишки там пока не сделаны.
Ответ написан
Seganapa
@Seganapa Автор вопроса
Ну есть же тут люди, знающие JavaScript? Мне нужна помощь только в этом вопросе… Как программно ввести данные и нажать две кнопки… Неужели из-за этого нужно учить весь JavaScript, я, так сказать, только полгода Python познаю… Мне еще тут учиться и учиться…
Ответ написан
Комментировать
risik
@risik
Программист
Есть еще варианты: watin, watir, watij. Ну это если для Вас python и javascript не является единственно возможным вариантом
Ответ написан
Комментировать
Seganapa
@Seganapa Автор вопроса
Пожалуйста, помогите кто-нибудь разобраться с этим делом.

Создал HTML с текстовой строкой для примера:


код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Textovoe Pole</title>
</head>
<body>

<form action="/cgi-bin/handler.cgi">
<p><b>Text</b></p>
<p><input type="text" maxlength="25" size="20"></p>
</form>

</body>
</html>


Вот код cefpython, который загружает этот HTML:
# Simple CEF Python application, 
# for more advanced features see "cefadvanced.py"

import cefpython
import cefwindow
import win32con
import win32gui
import win32api
import sys
import os

def CloseApplication(windowID, message, wparam, lparam):
	browser = cefpython.GetBrowserByWindowID(windowID)
	browser.CloseBrowser()
	return win32gui.DefWindowProc(windowID, message, wparam, lparam)

def QuitApplication(windowID, message, wparam, lparam):
	win32gui.PostQuitMessage(0)
	return 0

def CefSimple():
	sys.excepthook = cefpython.ExceptHook
	cefpython.Initialize()
	wndproc = {
		win32con.WM_CLOSE: CloseApplication, 
		win32con.WM_DESTROY: QuitApplication,
		win32con.WM_SIZE: cefpython.wm_Size,
		win32con.WM_SETFOCUS: cefpython.wm_SetFocus,
		win32con.WM_ERASEBKGND: cefpython.wm_EraseBkgnd
	}
	windowID = cefwindow.CreateWindow(title="CefSimple", className="cefsimple", 
					width=800, height=600, icon="icon.ico", windowProc=wndproc)
	browser = cefpython.CreateBrowser(windowID, browserSettings={}, navigateURL="new_2.html")
	cefpython.MessageLoop()
	cefpython.Shutdown()

if __name__ == "__main__":
	CefSimple()


Куда же нужно вставить
Browser->GetMainFrame()->ExecuteJavascript(«document.getElementById('lst-ib').value='my search';»)

Чтобы в текстовом поле появилось значение???
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы