Addition Of Files
This commit is contained in:
87
test_scraper.py
Normal file
87
test_scraper.py
Normal file
@@ -0,0 +1,87 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user