python(基于pyside2)下利用QWebEngineView内嵌网页实现的的自动登陆小程序,

今天写了一个python(基于pyside2)的自动登陆小程序,利用QWebEngineView内嵌网页实现的。主要解决了下面一些技术问题:

1、QWebEngineView内嵌网页。

利用QWebEnginePage对象的runJavaScript就可实现。

        # 初始化一个page
        self.webview = QWebEngineView(self)
        self.page = QWebEnginePage()
        self.webview.settings().setAttribute(QWebEngineSettings.PluginsEnabled, True)  # 支持视频播放
        self.page.windowCloseRequested.connect(self.on_windowCloseRequested)  # 页面关闭请求
        self.page.profile().downloadRequested.connect(self.on_downloadRequested)  # 页面下载请求
        # ------------监听 加载内容url
        self.t = WebEngineUrlRequestInterceptor()
        self.page.setUrl(QUrl("https://www.baidu.com"))
        self.webview.setPage(self.page)
        self.page.profile().setUrlRequestInterceptor(self.t)
        self.webview.loadProgress.connect(self.processLoad)
        self.frmWebview.setStyleSheet("border-top:1px solid #ccc;"
                                      "border-bottom:1px solid #ccc;border-left:1px solid #ccc")
        self.webview.show()

2、如何和python桌面程序交互。

利用QWebEnginePage对象的runJavaScript就可实现。比如找到CSDN网站登陆按钮:

 self.page.runJavaScript("""
     var hrefArr = document.getElementsByTagName('a'); //获取这个页面的所有A标签 
     for( var i=0; i<hrefArr.length; i++ ){                
         html = hrefArr[i].innerHTML;
         if (html == '账号密码登录'){
             hrefArr[i].click();
             break;
         }
     }  
     ...
            

另外还碰到了如何循环等待登陆框的出现,如何模拟键盘设置input框的值,如何动态施加按钮的单击事件等问题。

最后的效果如下:

双击左边的项目,即可自动登陆CSDN,程序仅为演示,代码中要改成自己的CSDN账号。登陆后的效果:

操作演示视频:

CSDN自动登陆脚本

需要源码的粉丝可以联系我QQ: 395702361

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
您可以使用 PyQt5/PySide2 提供的 QWebEngineView 类来显示 Web 内容,并在其上方添加菜单栏。以下是一个简单的示例代码: ```python from PySide2.QtCore import * from PySide2.QtGui import * from PySide2.QtWidgets import * from PySide2.QtWebEngineWidgets import * class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建 QWebEngineView 对象并添加到窗口中 self.webview = QWebEngineView() self.setCentralWidget(self.webview) # 创建菜单栏 menubar = self.menuBar() # 添加“文件”菜单 file_menu = menubar.addMenu("文件") # 添加“打开”菜单项 open_action = QAction("打开", self) open_action.triggered.connect(self.open_file) file_menu.addAction(open_action) def open_file(self): # 打开文件对话框并获取选择的文件路径 filename, _ = QFileDialog.getOpenFileName(self, "打开文件", "", "HTML 文件 (*.html *.htm)") if filename: # 加载文件内容到 QWebEngineView 中 self.webview.load(QUrl.fromLocalFile(filename)) if __name__ == "__main__": app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 在这个例子中,我们创建了一个 MainWindow 类,它继承自 QMainWindow 类。在 MainWindow 的构造函数中,我们创建了一个 QWebEngineView 对象,并将其设置为 MainWindow 的中央窗口部件。我们还创建了一个菜单栏并添加了一个“文件”菜单,其中包含一个“打开”菜单项。该菜单项绑定了 open_file() 方法,该方法通过文件对话框打开一个 HTML 文件,并将其内容加载到 QWebEngineView 中。 您可以根据您的需要添加更多的菜单项和操作。希望这能帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wave12_mp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值