es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La función actions.perform() en Selenium solo funciona la primera vez, luego no hace nada. ¿Cuál puede ser el problema?

El código a continuación es un CookieClicker automatizado que escribí para experimentar con ActionChains. Está basado en un video tutorial, en el minuto 9:42. (Enlace)

Cuando ejecuto este código, el bucle for se ejecuta 1000 veces pero solo se produce un clic. Varios clics solo suceden si quito el “#” de la línea comentada, por lo que ejecuto “actions.click(cookie)” cada vez. En cuanto al video, esa línea adicional de código no es necesaria. ¿Qué puede ser la causa de eso?

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.action_chains import ActionChains

s = Service("C:\Program Files (x86)\chromedriver.exe")
driver = webdriver.Chrome(service=s)

driver.maximize_window()
driver.get("https://orteil.dashnet.org/cookieclicker/")

driver.implicitly_wait(5)

cookie=driver.find_element(By.ID,"bigCookie")
cookie_count = driver.find_element(By.ID,"cookies")

actions = ActionChains(driver)
actions.click(cookie)

for i in range(1000):
    #actions.click(cookie)
    actions.perform()
    count=int(cookie_count.text.split(" ")[0])
    print(i,count)
driver.quit()
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La causa del problema podría deberse al hecho de que el sitio web ha sido actualizado desde la realización del video tutorial. El método perform() de ActionChains puede que no esté activando el evento de clic en el elemento cookie múltiples veces, por lo que es necesario agregar la línea adicional actions.click(cookie) para simular el clic cada vez en el bucle. Alternativamente, puede haber algún retraso en la respuesta del sitio web a los eventos de clic, y agregar esa línea adicional puede permitir el tiempo suficiente para que el sitio web responda a cada clic. Sin una investigación adicional, es difícil determinar la causa exacta del problema.

Comments are closed.