2025-11-06 11:30:31 +08:00
|
|
|
|
import random
|
2025-11-06 10:42:02 +08:00
|
|
|
|
from re import T
|
|
|
|
|
|
from DrissionPage import Chromium
|
2025-11-06 11:30:31 +08:00
|
|
|
|
import requests
|
2025-11-06 10:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
# 发送请求告知服务器执行完成
|
2025-11-06 11:30:31 +08:00
|
|
|
|
def task_push(project_name: str, browser_id: str, status: int = 200):
|
2025-11-06 10:42:02 +08:00
|
|
|
|
print('发送信息告知服务器脚本执行完成')
|
2025-11-06 11:30:31 +08:00
|
|
|
|
url = 'http://127.0.0.1:6060/task/info/push'
|
|
|
|
|
|
payload = {
|
|
|
|
|
|
"project_name": project_name,
|
|
|
|
|
|
"browser_id": browser_id,
|
|
|
|
|
|
"status": status
|
|
|
|
|
|
}
|
|
|
|
|
|
res = requests.post(url, json=payload).json()
|
|
|
|
|
|
print(res)
|
2025-11-06 10:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-11-06 11:30:31 +08:00
|
|
|
|
def main(http: str, browser_id: str):
|
2025-11-06 10:42:02 +08:00
|
|
|
|
"""
|
|
|
|
|
|
使用给定的 http 句柄接管已打开的指纹浏览器并执行示例登录流程
|
|
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
|
http (str): 浏览器的 http 句柄字符串
|
2025-11-06 11:30:31 +08:00
|
|
|
|
browser_id (str): 浏览器 ID
|
2025-11-06 10:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
None
|
|
|
|
|
|
"""
|
2025-11-06 11:30:31 +08:00
|
|
|
|
project_name = 'auto_test'
|
2025-11-06 10:42:02 +08:00
|
|
|
|
# 启动或接管浏览器,并获取标签页对象
|
|
|
|
|
|
print(f'使用 http 接管浏览器: {http}')
|
|
|
|
|
|
tab = Chromium(http).new_tab()
|
|
|
|
|
|
# 跳转到登录页面
|
2025-11-06 12:05:04 +08:00
|
|
|
|
tab.get('https://bing.com')
|
2025-11-06 10:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
# 定位到账号文本框,获取文本框元素
|
2025-11-06 11:59:35 +08:00
|
|
|
|
# ele = tab.ele('#user_login')
|
|
|
|
|
|
# # 输入账号
|
|
|
|
|
|
# ele.input('您的账号')
|
|
|
|
|
|
# # 定位到密码文本框并输入密码
|
|
|
|
|
|
# tab.ele('#user_password').input('您的密码')
|
|
|
|
|
|
# # 点击登录按钮
|
|
|
|
|
|
# tab.ele('@value=登 录').click()
|
2025-11-06 10:42:02 +08:00
|
|
|
|
# while True:
|
|
|
|
|
|
# print(1)
|
|
|
|
|
|
# time.sleep(5)
|
2025-11-06 11:59:35 +08:00
|
|
|
|
print(f'打开成功')
|
2025-11-06 11:30:31 +08:00
|
|
|
|
time.sleep(random.randint(5, 10))
|
|
|
|
|
|
task_push(project_name, browser_id)
|
|
|
|
|
|
|
2025-11-06 10:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
|
"""
|
2025-11-06 11:30:31 +08:00
|
|
|
|
脚本入口:支持从命令行参数或环境变量读取 http 和 browser_id 并调用 main
|
2025-11-06 10:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
- 命令行:python project/test/log.py <http>
|
2025-11-06 11:30:31 +08:00
|
|
|
|
- 环境变量:
|
|
|
|
|
|
- BROWSER_HTTP=<http> python project/test/log.py
|
|
|
|
|
|
- BROWSER_ID=<browser_id> python project/test/log.py (可选,用于提交项目状态)
|
2025-11-06 10:42:02 +08:00
|
|
|
|
"""
|
|
|
|
|
|
import os
|
|
|
|
|
|
import sys
|
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
http = os.getenv('BROWSER_HTTP') or (sys.argv[1] if len(sys.argv) > 1 else None)
|
|
|
|
|
|
if not http:
|
|
|
|
|
|
print('缺少 http 参数:请通过命令行传入或设置环境变量 BROWSER_HTTP')
|
|
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
2025-11-06 11:30:31 +08:00
|
|
|
|
# 获取浏览器ID(用于提交项目状态)
|
|
|
|
|
|
browser_id = os.getenv('BROWSER_ID') or (sys.argv[2] if len(sys.argv) > 2 else None)
|
|
|
|
|
|
if browser_id:
|
|
|
|
|
|
print(f'接收到 browser_id: {browser_id}')
|
|
|
|
|
|
|
2025-11-06 10:42:02 +08:00
|
|
|
|
print(f'接收到 http: {http}')
|
|
|
|
|
|
try:
|
2025-11-06 11:30:31 +08:00
|
|
|
|
print(f'http --> {http}')
|
|
|
|
|
|
print(f'browser_id --> {browser_id}')
|
|
|
|
|
|
main(http, browser_id)
|
2025-11-06 10:42:02 +08:00
|
|
|
|
print('脚本执行完成')
|
2025-11-06 11:30:31 +08:00
|
|
|
|
# 这里可以使用 browser_id 来提交项目状态
|
|
|
|
|
|
# if browser_id:
|
|
|
|
|
|
# send_complete(browser_id)
|
2025-11-06 10:42:02 +08:00
|
|
|
|
except Exception as e:
|
|
|
|
|
|
print(f'脚本执行异常: {e}')
|
|
|
|
|
|
sys.exit(2)
|