Javascript 如何使用QWebEngineView按id获取页面元素

Javascript 如何使用QWebEngineView按id获取页面元素,javascript,python,pyqt,pyqt5,qtwebengine,Javascript,Python,Pyqt,Pyqt5,Qtwebengine,如何获取页面ElementById,以便填充输入值 import sys from PyQt5 import QtWebEngineWidgets from PyQt5.QtCore import * from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import * from PyQt5.QtWidgets import QAction from PyQt5.QtWidgets import QApplication from PyQt5.Q

如何获取页面
ElementById
,以便填充输入值

import sys
from PyQt5 import QtWebEngineWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import QAction
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget, QMainWindow


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.iniGUI()  # App GUI
        self.table_widget = TabsWidgets(self)  # tabs
        self.setCentralWidget(self.table_widget)
        self.setWindowIcon(QIcon(r"images\title_icons.png"))

    def iniGUI(self):
        self.setWindowTitle("Team")
        self.resize(1500, 900)  # Width, height
        self.add_guiMenu_widgets()  # top menu

    # main window menu
    def add_guiMenu_widgets(self):
        self.statusBar().showMessage("Team")
        main_menu = self.menuBar()
        file_menu = main_menu.addMenu("File")
        help_menu = main_menu.addMenu("Help")

        # file menu button
        exit_button = QAction(QIcon("exit.png"), "Exit", self)
        exit_button.setShortcut("Ctrl+Q")
        exit_button.setStatusTip("Exit Application")
        exit_button.triggered.connect(QApplication.instance().quit)
        file_menu.addAction(exit_button)

        # help menu button
        about_button = QAction(QIcon("about.png"), "About", self)
        about_button.setShortcut("Ctrl+H")
        about_button.setStatusTip("About Application")
        help_menu.addAction(about_button)


def load_finished():
    print("Web Page is loaded")
    TabsWidgets.mainFlash.page().runJavaScript("document.getElementById('email').Value ='0m3r'")


class TabsWidgets(QWidget):
    def __init__(self, parent):
        super(TabsWidgets, self).__init__(parent)
        self.layout = QVBoxLayout()

        # Initialize tab screen
        self.tabs = QTabWidget()
        self.tab_mainFlash = QWidget()

        # Add tabs
        self.tabs.addTab(self.tab_mainFlash, " Flash - Main ")

        # Create tab_mainFlash
        self.tab_mainFlash.layout = QVBoxLayout(self)
        self.mainFlash = QtWebEngineWidgets.QWebEngineView()
        self.tab_mainFlash.layout.addWidget(self.mainFlash)
        self.tab_mainFlash.setLayout(self.tab_mainFlash.layout)
        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)
        self.mainFlash.load(QUrl(
            "https://www.facebook.com/login.php"))
        self.mainFlash.loadFinished.connect(load_finished)

        # self.mainFlash.page().runJavaScript("document.getElementById('email').Value ='0m3r'")
        # self.mainFlash.page().runJavaScript("document.getElementById('pass').Value ='0m3r'")


if __name__ == "__main__":
    application = QApplication(sys.argv)  # create Application
    application.setStyle("Fusion")  # stylesheet
    appGui = MainWindow()  # create instance of class
    appGui.show()  # show the constructed window
    sys.exit(application.exec_())  # execute the application
您必须使用“mainFlash”对象,但您使用的是TabsWidgets类,这有点不合逻辑(我建议您回顾OOP的基本概念:类和对象/实例)。此外,javascript区分大小写,因此“value”与“value”不同,后者属性不属于DOM元素

考虑到上述情况,解决方案是:

class TabsWidgets(QWidget):
    def __init__(self, parent):
        # ...

        self.mainFlash.load(QUrl("https://www.facebook.com/login.php"))
        self.mainFlash.loadFinished.connect(self.on_load_finished)

    def on_load_finished(self, ok):
        if ok:
            self.mainFlash.page().runJavaScript("""
                document.getElementById('email').value ='0m3r';
                document.getElementById('pass').value ='0m3r';
                // click
                document.getElementById('loginbutton').click();
            """)
类选项卡(QWidget):
定义初始化(自身,父级):
# ...
自身主闪存加载(QUrl(“https://www.facebook.com/login.php"))
self.mainFlash.loadFinished.connect(self.on\u load\u finished)
def加载完成(自身,正常):
如果确定:
self.mainFlash.page().runJavaScript(“”)
document.getElementById('email')。value='0m3r';
document.getElementById('pass')。value='0m3r';
//点击
document.getElementById('loginbutton')。单击();

“”“
谢谢,@eyllansc-我将阅读更多关于OOP概念的内容