Никак не могу разобраться как запустить повторный запрос на авторизацию, авторизоваться получается только с первого раза, если ввожу повторно пару логин/пароль приложение просто завершается.
Ниже код который получился:
# -*- coding: utf-8 -*- from PySide import QtGui from PySide import QtCore from PySide import QtWebKit import sys #Окно аутентификации class Login(QtGui.QDialog): def __init__(self): QtGui.QDialog.__init__(self) self.setWindowTitle(u'Авторизация.') self.lbl_head = QtGui.QLabel(u"<font color=red><b>Авторизуйтесь перед выполнением работ!</b></font>", self) self.lbl_name = QtGui.QLabel(u'Логин:', self) self.lbl_pass = QtGui.QLabel(u'Пароль:', self) self.textName = QtGui.QLineEdit(self) self.textPass = QtGui.QLineEdit(self) self.textPass.setEchoMode(QtGui.QLineEdit.Password) self.buttonLogin = QtGui.QPushButton(u'Авторизация', self) self.buttonLogin.clicked.connect(self.handleLogin) #Расположение элементов в окне grid = QtGui.QGridLayout() grid.addWidget(self.lbl_head, 0, 0, 1, 0) grid.addWidget(self.lbl_name, 1, 0) grid.addWidget(self.textName, 1, 1) grid.addWidget(self.lbl_pass, 2, 0) grid.addWidget(self.textPass, 2, 1) grid.addWidget(self.buttonLogin, 3, 0, 1, 0) self.setLayout(grid) def handleLogin(self): Window.log_login = self.textName.text() Window.pass_login = self.textPass.text() self.accept() class Window(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.area = QtGui.QWidget(self) self.setCentralWidget(self.area) self.resize(1200, 900) self.setWindowTitle(u'Учет предприятии.') # Помещаем GUI в центр экрана screen = QtGui.QDesktopWidget().screenGeometry() size = self.geometry() self.move((screen.width()-size.width())/3, (screen.height()-size.height())/3) #Размещаем браузер self.web=QtWebKit.QWebView(self) self.web.setGeometry(0,20,1200,900) self.web.setWindowTitle('MyWebKitBrowser') #Расположение элементов в окне self.layout = QtGui.QVBoxLayout() self.layout.addWidget(self.web) self.area.setLayout(self.layout) self.area.show() self.log_def() def log_def(self): log1 = Login() f = log1.exec_() self.log = log1.textName.text() self.pas = log1.textPass.text() self.web.load(QtCore.QUrl('http://www.anysite.com')) self.web.loadFinished.connect(self.fillForm) #Авторизация на сайте!!! def fillForm(self): doc = self.web.page().mainFrame().documentElement() user = doc.findFirst("input[id=modlgn-username]") passwd = doc.findFirst("input[id=modlgn-passwd]") user.setAttribute("value", self.log) passwd.setAttribute("value", self.pas) form = doc.findFirst("form[id=login-form]") form.evaluateJavaScript('this.submit()') self.web.loadFinished.connect(self.searchExit) self.web.loadFinished.disconnect(self.fillForm) #Проверка авторизации. def searchExit(self): doc1 = self.web.page().mainFrame().documentElement() self.auth = doc1.findFirst("input[name=task]") #Проверка авторизации if self.auth.attribute("value") == "user.logout": window.show() else: self.log_def() self.web.loadFinished.disconnect(self.searchExit) if __name__ == '__main__': app = QtGui.QApplication(sys.argv) window = Window() app.exec_()