Код: Выделить всё
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
script = """
(() => {
let clickCount = 0; // Track total clicks
const interval = setInterval(() => {
const buyButton = document.getElementById('TheBuyButton');
const winningsElement = document.getElementById('numWinnings8');
buyButton.click();
clickCount++;
// Check the winnings value
const reward = winningsElement.innerText;
console.log(`Click #${clickCount}: Winnings = ${reward}`);
// Stop if it changes to "1" (indicating a win)
if (reward === "1") {
clearInterval(interval);
document.body.setAttribute("data-status", "won");
console.log(`Win detected after ${clickCount} clicks!`);
}
}, 0); // 0ms delay for speed
})();
"""
clickslist = []
for i in range(2):
options = webdriver.EdgeOptions()
options.add_argument("--headless")
options.add_argument("--mute-audio")
browser = webdriver.Edge(options=options)
browser.get("https://www.skrabejulekalender-simulator.dk/game.php")
for j in range(2):
element = browser.find_element(By.ID, "menuButton")
element.click()
print("Im here")
browser.execute_script(script)
print("Im here now")
while True:
status = browser.execute_script("return document.body.getAttribute('data-status');")
clicksCheck = browser.execute_script("return document.getElementById('numCalenders').innerText;")
if status == "won":
print("Win detected! Exiting loop.")
clicks = browser.execute_script("return document.getElementById('numCalenders').innerText;")
clickslist.append(clicks)
break
time.sleep(2)
print(f"number of clicks: {clicksCheck}")
browser.save_screenshot(f"Screenshot_{i}.png")
print("Screenshot saved.")
browser.quit()
k = " stk."
newList = [int(ele.replace(k,'')) for ele in clickslist]
print(newList)
print(f"average clicks till win: {sum(newList)/len(newList)}")
Я пробовал опросить, поэтому Selenium не должен быть «подключен» к браузеру сервера, он должен работать независимо, а затем Selenium будет выполнять некоторые вызовы здесь и там. (каждые 2 секунды), чтобы проверить, есть ли у него скретч-карта на 1 миллион. Дело в том, что даже когда я получаю сообщение об ошибке, веб-сайт все равно запускает сценарий, поэтому он не зависит от Selenium. Скрипт также останавливает его, что тоже работает.
Проблема в том, что мне нужно долго проделывать это с 1-миллионной скретч-картой, и мне нужно пройти мимо «browser. Execute_script(script)", чтобы я мог фактически получить количество кликов, добавить его в список кликов и в конечном итоге посмотреть, что я получу.
Когда я запускаю программу для получения более обычного вознаграждения, оно проходит мимо «browser.execute_script(скрипт)». Я делаю что-то не так, но не вижу этого или, возможно, Selenium мне не подходит
Подробнее здесь: https://stackoverflow.com/questions/792 ... t-selenium