簡體   English   中英

如何使用QWebEngineView通過id獲取頁面元素

[英]How to get page element by id using QWebEngineView

如何獲取頁面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(); """)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM