main
HuangHai 5 months ago
parent c268dbe680
commit 29a3bf0b9f

@ -121,4 +121,4 @@ def check_task(guid):
if __name__ == '__main__': if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, threaded=True) app.run(host='0.0.0.0', port=6000, threaded=True)

@ -1,13 +1,8 @@
import time import time
from playwright.sync_api import Playwright, sync_playwright from playwright.sync_api import Playwright, sync_playwright
def run(playwright: Playwright) -> None: # 登录
# 启动浏览器,禁用无头模式 def login(page):
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
try:
# 打开登录页面 # 打开登录页面
print("打开登录页面...") print("打开登录页面...")
page.goto("https://ww1.colorlightcloud.com/login", wait_until="domcontentloaded") # 等待 DOM 加载完成 page.goto("https://ww1.colorlightcloud.com/login", wait_until="domcontentloaded") # 等待 DOM 加载完成
@ -31,6 +26,37 @@ def run(playwright: Playwright) -> None:
print("等待登录成功...") print("等待登录成功...")
page.wait_for_url("https://ww1.colorlightcloud.com/home", timeout=60000) # 等待跳转到 home 页面 page.wait_for_url("https://ww1.colorlightcloud.com/home", timeout=60000) # 等待跳转到 home 页面
# 删除节目
def delProgram(page):
# 点击“节目”
print("点击节目...")
program_library = page.get_by_text("节目").nth(0) # 通过 text 定位媒体库
program_library.click()
# 定位目标元素
element = page.locator("span.group-name").nth(0)
# 将鼠标移动到元素上
element.hover()
# 点击复选框
checkbox_span = page.locator("span.mat-checkbox-inner-container").nth(0)
checkbox_span.click()
time.sleep(1)
# 点击删除按钮
print(page.locator("mat-icon:has-text('delete')").count())
delete_icon = page.locator("mat-icon:has-text('delete')").nth(0)
if delete_icon.is_visible():
delete_icon.click() # 点击该元素
# 定位并点击 <button> 元素
print("定位并点击确定按钮...")
confirm_button = page.locator("button:has-text('确定')")
if confirm_button.is_visible():
confirm_button.click() # 点击该元素
# 删除以前上传的素材
def delMaterial(page):
# 点击“媒体库” # 点击“媒体库”
print("点击媒体库...") print("点击媒体库...")
media_library = page.get_by_text("媒体库") # 通过 text 定位媒体库 media_library = page.get_by_text("媒体库") # 通过 text 定位媒体库
@ -41,7 +67,7 @@ def run(playwright: Playwright) -> None:
print("点击播报充电情况...") print("点击播报充电情况...")
playback_charge_status = page.get_by_text("播报充电情况") playback_charge_status = page.get_by_text("播报充电情况")
playback_charge_status.dblclick() playback_charge_status.dblclick()
time.sleep(2) time.sleep(1)
# 检查 <span> 元素是否存在 # 检查 <span> 元素是否存在
print("检查 <span> 元素是否存在...") print("检查 <span> 元素是否存在...")
if page.locator("span.media-group-name").count() > 0: if page.locator("span.media-group-name").count() > 0:
@ -49,7 +75,7 @@ def run(playwright: Playwright) -> None:
print("鼠标移动到第一个 <span> 元素...") print("鼠标移动到第一个 <span> 元素...")
first_span = page.locator("span.media-group-name").nth(0) # 定位第一个 <span> 元素 first_span = page.locator("span.media-group-name").nth(0) # 定位第一个 <span> 元素
first_span.hover() # 鼠标移动到该元素 first_span.hover() # 鼠标移动到该元素
time.sleep(1)
# 定位并点击外层的 <span> 元素 # 定位并点击外层的 <span> 元素
print("定位并点击外层的 <span> 元素...") print("定位并点击外层的 <span> 元素...")
checkbox_span = page.locator("span.mat-checkbox-inner-container").nth(0) # 定位 <span> 元素 checkbox_span = page.locator("span.mat-checkbox-inner-container").nth(0) # 定位 <span> 元素
@ -70,6 +96,8 @@ def run(playwright: Playwright) -> None:
else: else:
print("未找到 <span> 元素,可能页面未加载或元素不存在") print("未找到 <span> 元素,可能页面未加载或元素不存在")
# 上传文件
def uploadVideo(page):
# 点击“编辑节目” 点一下编辑节目是为了切换一下页面 # 点击“编辑节目” 点一下编辑节目是为了切换一下页面
print("点击编辑节目...") print("点击编辑节目...")
jiemu_library = page.get_by_text("编辑节目") # 通过 text 定位编辑节目 jiemu_library = page.get_by_text("编辑节目") # 通过 text 定位编辑节目
@ -105,7 +133,8 @@ def run(playwright: Playwright) -> None:
print("上传进行中...") print("上传进行中...")
time.sleep(0.5) # 每隔 0.5 秒检查一次 time.sleep(0.5) # 每隔 0.5 秒检查一次
# 发布节目
def publish(page):
print("点击编辑节目...") print("点击编辑节目...")
jiemu_library = page.get_by_text("编辑节目") # 通过 text 定位编辑节目 jiemu_library = page.get_by_text("编辑节目") # 通过 text 定位编辑节目
jiemu_library.click() jiemu_library.click()
@ -154,22 +183,46 @@ def run(playwright: Playwright) -> None:
publish_button = page.locator("div.btn.publish") # 定位 <div> 元素 publish_button = page.locator("div.btn.publish") # 定位 <div> 元素
if publish_button.is_visible(): if publish_button.is_visible():
publish_button.click() # 点击该元素 publish_button.click() # 点击该元素
# # 定位并点击 <mat-tree-node> 元素 # 定位并点击 <mat-tree-node> 元素
# print("定位并点击 <mat-tree-node> 元素...") print("定位并点击 <mat-tree-node> 元素...")
# tree_node = page.locator( tree_node = page.locator(
# "mat-tree-node.node-custom-style:has-text('充电站')") # 定位 <mat-tree-node> 元素 "mat-tree-node.node-custom-style:has-text('充电站')") # 定位 <mat-tree-node> 元素
# if tree_node.is_visible(): if tree_node.is_visible():
# tree_node.click() # 点击该元素 tree_node.click() # 点击该元素
# else: else:
# print("<mat-tree-node> 元素未找到") print("<mat-tree-node> 元素未找到")
else: else:
print("<div> 元素未找到") print("<div> 元素未找到")
else: else:
print("<img> 元素未找到") print("<img> 元素未找到")
else: else:
print("<span> 元素未找到") print("<span> 元素未找到")
def run(playwright: Playwright) -> None:
# 启动浏览器,禁用无头模式
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
try:
# 登录
login(page)
# 删除节目
delProgram(page)
# 删除素材
# delMaterial(page)
# 上传文件
#uploadVideo(page)
# 发布节目
#publish(page)
time.sleep(60) time.sleep(60)
except Exception as e: except Exception as e:
print(f"操作过程中发生错误: {e}") print(f"操作过程中发生错误: {e}")
finally: finally:

@ -463,13 +463,21 @@ public class SyncDataEase {
Db.use(MYSQL_DB).update(sql); Db.use(MYSQL_DB).update(sql);
sql = "insert into `excel_数据_4201e218bb`(id,`排名`,`学校名称`,`学段`,`行政区划`,`课程建设总量`,`注册教师`,`参与课程建设教师`) values(?,?,?,?,?,?,?,?)"; sql = "insert into `excel_数据_4201e218bb`(id,`排名`,`学校名称`,`学段`,`行政区划`,`课程建设总量`,`注册教师`,`参与课程建设教师`) values(?,?,?,?,?,?,?,?)";
int idx = 0; int idx = 0;
int inner_idx=0;
String last_name = "";
for (Record record : list) { for (Record record : list) {
++idx;
int lesson_cnt = record.getInt("lesson_cnt"); int lesson_cnt = record.getInt("lesson_cnt");
String organization_name = record.getStr("organization_name"); String organization_name = record.getStr("organization_name");
String gather_regionc = record.getStr("gather_regionc"); String gather_regionc = record.getStr("gather_regionc");
if (gather_regionc.equals(last_name)) {
inner_idx++;
}else{
inner_idx=1;
}
int signin_cnt = record.getInt("signin_cnt"); int signin_cnt = record.getInt("signin_cnt");
int teacher_cnt = record.getInt("teacher_cnt"); int teacher_cnt = record.getInt("teacher_cnt");
Db.use(MYSQL_DB).update(sql, idx,idx, organization_name, "全部", gather_regionc, lesson_cnt,signin_cnt, teacher_cnt); Db.use(MYSQL_DB).update(sql, idx, inner_idx, organization_name, "全部", gather_regionc, lesson_cnt, signin_cnt, teacher_cnt);
} }
print("更新县区学校排名成功!"); print("更新县区学校排名成功!");
} }

Loading…
Cancel
Save