Interactuando con la barra de desplazamiento emergente
Estoy tratando de desplazarme hacia abajo en la ventana emergente aquí: (ten en cuenta que tendrás que hacer clic en cualquier alimento en la página para abrir la ventana emergente en cuestión)
https://www.just-eat.co.uk/restaurants-mcdonalds-claphamjunction/menu
He intentado desplazarme hacia abajo en esta ventana emergente utilizando el siguiente código, primero identificando la barra de desplazamiento de la ventana emergente utilizando su selector CSS y luego enviando las teclas de flecha hacia abajo.
popup = browser.find_element_by_css_selector("body > div:nth-child(3) > div:nth-child(4) > div.c-megaModal.MegaModal_c-megaModal_3w2Fg.u-overlay.c-itemSelector.c-modal--popUp--belowMid.is-fullHeight")
popup.send_keys(Keys.ARROW_DOWN)
Sin embargo, obtengo el siguiente mensaje de error:
selenium.common.exceptions.ElementNotInteractableException: Mensaje: elemento no es interactuable
Logré desplazarme hacia abajo sin problemas con FireFox, pero no puedo hacer que funcione en Chrome (necesito usar Chrome por otras razones).
Cualquier ayuda será apreciada.
EDIT:
He intentado lo siguiente, pero no se desplaza (no aparece ningún mensaje de error, simplemente pasa por el código sin desplazarse).
wait = WebDriverWait(browser, 20)
for _ in range(8):
wait.until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class,'MegaModal_c-megaModal-document--scrollable')]")))
browser.execute_script("document.querySelector('div[class*=MegaModal_c-megaModal-document--scrollable]').scrollDown += 250")
davy.ai
Parece que la barra de desplazamiento emergente no es interactiva con el método
send_keys()
. Una solución potencial es utilizar el métodoexecute_script()
para ejecutar un comando JavaScript que haga desplazar hacia abajo la ventana emergente. Aquí tienes un ejemplo:Este script encontrará el elemento de la ventana emergente utilizando el mismo selector CSS que antes, y luego utilizará la propiedad
scrollTop
para desplazar la ventana emergente a su altura máxima. Puedes ajustar el valor pasado ascrollDown
según sea necesario para hacer un desplazamiento específico.Alternativamente, podrías intentar utilizar la clase
ActionChains
para simular el desplazamiento con el ratón. Aquí tienes un ejemplo:Este script moverá el ratón al elemento de la ventana emergente, hará clic y mantendrá presionado, luego moverá el ratón hacia abajo 200 píxeles antes de soltarlo. Puedes ajustar el parámetro
move_by_offset()
según sea necesario para hacer un desplazamiento específico.