初始提交
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import pytest
|
||||
from playwright.async_api import async_playwright
|
||||
|
||||
from common.base_page_test import BasePageTest
|
||||
from common.config import Config
|
||||
|
||||
|
||||
class OnlineUserTest(BasePageTest):
|
||||
"""在线用户测试类"""
|
||||
|
||||
async def test_online_user_operations(self) -> None:
|
||||
"""测试在线用户强退"""
|
||||
# 1. 模拟 niangao 用户登录以产生在线会话
|
||||
# 使用一个新的上下文来模拟另一个用户的登录
|
||||
niangao_context = await self.browser.new_context()
|
||||
niangao_page = await niangao_context.new_page()
|
||||
|
||||
# 登录 niangao
|
||||
try:
|
||||
await niangao_page.goto(Config.frontend_url + '/login')
|
||||
await niangao_page.locator('div.el-form-item', has_text='账号').locator('input').fill('niangao')
|
||||
await niangao_page.locator('div.el-form-item', has_text='密码').locator('input').fill('admin123')
|
||||
await niangao_page.get_by_role('button', name='登 录').click()
|
||||
# 等待登录成功
|
||||
await niangao_page.wait_for_url('**/index')
|
||||
except Exception as e:
|
||||
print(f'Niangao login failed: {e}. Trying admin123')
|
||||
try:
|
||||
await niangao_page.locator('div.el-form-item', has_text='密码').locator('input').fill('123456')
|
||||
await niangao_page.get_by_role('button', name='登 录').click()
|
||||
await niangao_page.wait_for_url('**/index')
|
||||
except Exception as e2:
|
||||
print(f'Niangao login failed again: {e2}')
|
||||
|
||||
# 2. 切换回 admin (self.page) 进行操作
|
||||
await self.page.goto(Config.frontend_url + '/monitor/online')
|
||||
await self.page.wait_for_load_state('networkidle')
|
||||
|
||||
# 3. 搜索 niangao 用户
|
||||
await self.page.locator('div.el-form-item', has_text='用户名称').locator('input').fill('niangao')
|
||||
await self.page.get_by_role('button', name='搜索').click()
|
||||
await self.page.wait_for_timeout(1000)
|
||||
|
||||
# 4. 强退操作
|
||||
# 检查是否有数据
|
||||
rows = self.page.locator('.el-table__body tr')
|
||||
count = await rows.count()
|
||||
if count > 0:
|
||||
# 点击强退
|
||||
await rows.first.get_by_role('button', name='强退').click()
|
||||
# 确认
|
||||
await self.page.get_by_role('button', name='确定').click()
|
||||
# 验证
|
||||
await self.page.wait_for_selector('text=删除成功', timeout=3000)
|
||||
|
||||
# 再次搜索确认消失
|
||||
await self.page.wait_for_timeout(1000)
|
||||
await self.page.get_by_role('button', name='搜索').click()
|
||||
|
||||
# 关闭 niangao 的上下文
|
||||
await niangao_context.close()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_online_user_page() -> None:
|
||||
"""测试在线用户页面功能"""
|
||||
async with async_playwright() as p:
|
||||
test_instance = OnlineUserTest()
|
||||
await test_instance.setup(p)
|
||||
try:
|
||||
await test_instance.test_online_user_operations()
|
||||
finally:
|
||||
await test_instance.teardown()
|
||||
Reference in New Issue
Block a user