add tests (在测试模块,增加 emv界面测试 和 计量界面测试)

This commit is contained in:
2025-08-29 14:55:00 +08:00
parent 7cb36c75ea
commit 17abd13df7
8 changed files with 407 additions and 0 deletions

98
tests/test_teachhtml.py Normal file
View 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())