我的python脚本有问题。我想做一个简单的应用程序,让一个人在网站上自动登录。我认为这可以通过QUrl和QUrl查询来实现。只是html中的表单确实如此。现在我的问题是:当我试图用
print(login_url.toString(QUrl()))
,它只打印一个空行
伊瑟夫比
# -*- coding: utf-8 -*-
from PyQt5.QtCore import QUrl, QUrlQuery
from PyQt5.QtWidgets import QMessageBox
from PyQt5 import QtWidgets
import os
import Webview
import sys
def handle_url_changed():
if webView.url() == QUrl("https://the-server.de/iserv/login"):
login_url = QUrl
login_url.setUrl(QUrl(), "https://the-server.de/iserv/login_check")
# os.system("notify-send " + login_url.toString(QUrl()))
login_query = QUrlQuery
login_query.addQueryItem(QUrlQuery(), "Class", "login-form")
login_query.addQueryItem(QUrlQuery(), "Method", "post")
login_query.addQueryItem(QUrlQuery(), "_username", "...")
login_query.addQueryItem(QUrlQuery(), "_password", "...")
login_query.addQueryItem(QUrlQuery(), "_remember_me", "0")
login_url.setQuery(QUrl(), login_query())
webView.load(login_url())
print(login_url.toString(QUrl()))
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Webview.Ui_MainWindow()
ui.setupUi(MainWindow)
webView = ui.webView
webView.urlChanged.connect(lambda: handle_url_changed())
MainWindow.show()
sys.exit(app.exec_())
Webview.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Webview.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5 import QtWebEngineWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(900, 700)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
MainWindow.setMinimumSize(QtCore.QSize(500, 625))
MainWindow.setFocusPolicy(QtCore.Qt.NoFocus)
MainWindow.setUnifiedTitleAndToolBarOnMac(True)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.webView = QtWebEngineWidgets.QWebEngineView(self.centralwidget)
self.webView.setUrl(QtCore.QUrl("https://the-server.de/"))
self.webView.setObjectName("webView")
self.gridLayout.addWidget(self.webView, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "IServ"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
主要错误是您没有创建QUrl和QUrlQuery对象(或者说您正在立即创建和删除它们)
此外,创建类比处理全局变量更好,以避免出现无提示错误
因此我建议您查看OOP说明。
考虑到上述情况,解决方案是:
相关问题 更多 >
编程相关推荐