Продолжается моя эпопея с внедрением браузера в мое приложение.
Так и не удалось мне отыскать причину, по которой webkit ну никак не хочет полностью догружать страницу
ru.grepolis.comПеречитал огромную кучу информацию, перевел немереное количество текста, но ответа так и не нашел. Очень грустно.
В итоге набрел на проект cefpython (
http://code.google.com/p/cefpython/). Это Chromium Embedded Framework (Фреймворк привязок Google Chrome)
Он подходит для решения моей задачи как нельзя лучше!
Вот пример кода для загрузки страницы grepolis:
# An example of embedding CEF in wxPython application.
#coding:utf-8
import wx
import sys
import time
import cefpython
# TODO: currently we use wx.Timer to imitate message loop, but
# it would probably be better to use wx.CallLater() and wx.lib.pubsub.
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.CreateMenu()
self.browser = cefpython.CreateBrowser(self.GetHandle(), browserSettings={}, navigateURL="http://ru.grepolis.com")
self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus)
self.Bind(wx.EVT_SIZE, self.OnSize)
def CreateMenu(self):
filemenu = wx.Menu()
filemenu.Append(1, "Открыть")
filemenu.Append(2, "Выход")
aboutmenu = wx.Menu()
aboutmenu.Append(1, "CEF Python")
menubar = wx.MenuBar()
menubar.Append(filemenu,"&File")
menubar.Append(aboutmenu, "&About")
self.SetMenuBar(menubar)
def OnSetFocus(self, event):
cefpython.wm_SetFocus(self.GetHandle(), 0, 0, 0)
def OnSize(self, event):
cefpython.wm_Size(self.GetHandle(), 0, 0, 0)
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 OnExit(self):
self.timer.Stop()
cefpython.Shutdown()
def OnTimer(self, event):
cefpython.SingleMessageLoop()
if __name__ == '__main__':
print('wx.version=%s' % wx.version())
app = MyApp(False)
app.MainLoop()
Проверил, все грузится полностью, как нужно… Но вот теперь возник другой вопрос!
КАК ЖЕ ТЕПЕРЬ АВТОМАТИЗИРОВАТЬ ЗАПОЛНЕНИЕ ВВОДА ЛОГИНА И ПАРОЛЯ И НАЖАТЬ НА КНОПКУ АВТОРИЗАЦИИ?
Возможно ли это? Какими средствами? Кто сталкивался? Безуспешно гуглил, очень мало информации по cefpython. Думал написать разработчику, но в связи с трудностями в английском, не могу правильно составить (сформулировать) свой вопрос.
Очень нуждаюсь в помощи…