Код отказывается продолжать работу после внедрения на сайт скрипта -SeleniumPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Код отказывается продолжать работу после внедрения на сайт скрипта -Selenium

Сообщение Anonymous »

Итак, это мой код:

Код: Выделить всё

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)}")
Последний час я пытался заставить это работать, но, похоже, дальше ничего не вышло: «browser.execute_script(script)». Я запускаю его на датском симуляторе скретч-карт. Я хочу посмотреть, сколько «скрэтч-карт» нужно, чтобы получить награду в 1 миллион. Дело в том, что вероятность получить скретч-карту на 1 миллион настолько мала, что на это уходит много времени. Из-за этого у Selenium истекает время ожидания, и я получаю ошибку тайм-аута. Как мне этого избежать?
Я пробовал опросить, поэтому Selenium не должен быть «подключен» к браузеру сервера, он должен работать независимо, а затем Selenium будет выполнять некоторые вызовы здесь и там. (каждые 2 секунды), чтобы проверить, есть ли у него скретч-карта на 1 миллион. Дело в том, что даже когда я получаю сообщение об ошибке, веб-сайт все равно запускает сценарий, поэтому он не зависит от Selenium. Скрипт также останавливает его, что тоже работает.
Проблема в том, что мне нужно долго проделывать это с 1-миллионной скретч-картой, и мне нужно пройти мимо «browser. Execute_script(script)", чтобы я мог фактически получить количество кликов, добавить его в список кликов и в конечном итоге посмотреть, что я получу.
Когда я запускаю программу для получения более обычного вознаграждения, оно проходит мимо «browser.execute_script(скрипт)». Я делаю что-то не так, но не вижу этого или, возможно, Selenium мне не подходит

Подробнее здесь: https://stackoverflow.com/questions/792 ... t-selenium
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»