88 lines
3.4 KiB
Python
88 lines
3.4 KiB
Python
"""Quick test of the fixed level navigation"""
|
|
import os
|
|
import sys
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
URL = "https://gametora.com/umamusume/supports/30022-mejiro-mcqueen"
|
|
|
|
def test_levels():
|
|
print("Testing fixed level navigation...")
|
|
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True)
|
|
page = browser.new_page()
|
|
|
|
page.goto(URL, timeout=60000)
|
|
page.wait_for_load_state("networkidle")
|
|
page.wait_for_timeout(2000)
|
|
|
|
for target in [1, 25, 40, 50]:
|
|
actual = page.evaluate("""
|
|
async (targetLevel) => {
|
|
const getLevel = () => {
|
|
const el = Array.from(document.querySelectorAll('div')).find(d =>
|
|
d.textContent.trim().startsWith('Level ') && d.children.length === 0
|
|
);
|
|
if (!el) {
|
|
const text = document.body.innerText;
|
|
const match = text.match(/Level\\s*(\\d+)/i);
|
|
return match ? parseInt(match[1]) : 30;
|
|
}
|
|
return parseInt(el.textContent.replace('Level ', '').trim());
|
|
};
|
|
|
|
const clickButton = (text) => {
|
|
const btns = Array.from(document.querySelectorAll('div'));
|
|
const btn = btns.find(d => d.textContent.trim() === text && d.children.length === 0);
|
|
if (btn) {
|
|
btn.click();
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
let currentLevel = getLevel();
|
|
|
|
while (currentLevel !== targetLevel) {
|
|
let btnText;
|
|
if (currentLevel > targetLevel) {
|
|
const diff = currentLevel - targetLevel;
|
|
btnText = diff >= 5 ? '-5' : '-1';
|
|
} else {
|
|
const diff = targetLevel - currentLevel;
|
|
btnText = diff >= 5 ? '+5' : '+1';
|
|
}
|
|
|
|
if (!clickButton(btnText)) break;
|
|
|
|
const startLevel = currentLevel;
|
|
let start = Date.now();
|
|
while (Date.now() - start < 1000) {
|
|
await new Promise(r => setTimeout(r, 50));
|
|
const newLevel = getLevel();
|
|
if (newLevel !== startLevel) {
|
|
currentLevel = newLevel;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (currentLevel === startLevel) break;
|
|
}
|
|
|
|
await new Promise(r => setTimeout(r, 200));
|
|
return getLevel();
|
|
}
|
|
""", target)
|
|
|
|
status = "✓" if actual == target else "✗"
|
|
print(f"Target: {target} -> Actual: {actual} {status}")
|
|
|
|
browser.close()
|
|
|
|
print("Done!")
|
|
|
|
if __name__ == "__main__":
|
|
test_levels()
|