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()
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()
deActionChains
puede que no esté activando el evento de clic en el elementocookie
múltiples veces, por lo que es necesario agregar la línea adicionalactions.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.