add tests (在测试模块,增加 emv界面测试 和 计量界面测试)
This commit is contained in:
98
tests/test_teachhtml.py
Normal file
98
tests/test_teachhtml.py
Normal file
@ -0,0 +1,98 @@
|
||||
from common import *
|
||||
|
||||
import sys
|
||||
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
|
||||
from PySide6.QtWebEngineWidgets import QWebEngineView
|
||||
from PySide6.QtCore import QUrl, QTimer
|
||||
|
||||
|
||||
# 示教器页面
|
||||
class TeachBrowser(QWidget):
|
||||
def __init__(
|
||||
self,
|
||||
parent=None,
|
||||
url="http://192.168.58.2/login.html",
|
||||
username="admin",
|
||||
password="123",
|
||||
):
|
||||
super().__init__(parent=parent)
|
||||
self.setWindowTitle("示教器页面")
|
||||
# self.setGeometry(100, 100, 1024, 768)
|
||||
|
||||
# 1. 配置登录信息
|
||||
self.login_username = username # 登录的用户名
|
||||
self.login_password = password # 登录的密码
|
||||
|
||||
# 2. 初始化浏览器视图
|
||||
self.web_view = QWebEngineView()
|
||||
# 加载登录页面
|
||||
self.web_view.load(QUrl(url))
|
||||
|
||||
# 3. 绑定网页加载完成信号
|
||||
self.web_view.loadFinished.connect(self.onPageLoaded)
|
||||
|
||||
# 4. 设置窗口布局
|
||||
layout = QVBoxLayout(self)
|
||||
layout.addWidget(self.web_view)
|
||||
|
||||
def onPageLoaded(self, success):
|
||||
"""页面加载完成后,执行登录逻辑"""
|
||||
if not success:
|
||||
# print("登录页面加载失败!")
|
||||
return
|
||||
|
||||
self.injectLoginJs()
|
||||
|
||||
self.web_view.loadFinished.disconnect(self.onPageLoaded)
|
||||
|
||||
def injectLoginJs(self):
|
||||
"""注入 JavaScript 代码,自动输入用户名和密码"""
|
||||
auto_login_js = f"""
|
||||
// 1. 等待 AngularJS 完全初始化(确保能获取到 scope)
|
||||
function waitForAngular() {{
|
||||
return new Promise((resolve) => {{
|
||||
const checkAngular = () => {{
|
||||
// 判断 Angular 是否加载完成,且登录表单(if_Login0)已显示
|
||||
if (window.angular && document.querySelector('#loginForm')) {{
|
||||
resolve();
|
||||
}} else {{
|
||||
setTimeout(checkAngular, 200); // 每 200ms 检查一次
|
||||
}}
|
||||
}};
|
||||
checkAngular();
|
||||
}});
|
||||
}}
|
||||
|
||||
// 2. 核心登录逻辑
|
||||
async function autoLogin() {{
|
||||
await waitForAngular(); // 等待 Angular 初始化
|
||||
|
||||
// 获取第一个登录表单(id="loginForm",ng-if="if_Login0")的 Angular 作用域
|
||||
const loginForm = document.querySelector('#loginForm');
|
||||
const scope = window.angular.element(loginForm).scope();
|
||||
|
||||
if (!scope) {{
|
||||
return;
|
||||
}}
|
||||
|
||||
// 3. 填充用户名和密码(对应 ng-model="$parent.userName" 和 "$parent.password")
|
||||
scope.$apply(() => {{
|
||||
scope.$parent.userName = "{self.login_username}"; // 用户名
|
||||
scope.$parent.password = "{self.login_password}"; // 密码
|
||||
}});
|
||||
|
||||
}}
|
||||
|
||||
// 执行登录
|
||||
autoLogin();
|
||||
"""
|
||||
|
||||
# 执行注入的 JS 代码
|
||||
self.web_view.page().runJavaScript(auto_login_js)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
window = TeachBrowser()
|
||||
window.show()
|
||||
sys.exit(app.exec())
|
||||
Reference in New Issue
Block a user