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.

¿Por qué Playwright no cambia la URL una vez que se hace clic en el botón en Uber Eats?

Básicamente, quiero ingresar una dirección en Uber Eats y pasar a la siguiente página. Sin embargo, he notado que la URL en realidad no cambia una vez que se hace clic en el botón.

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://www.ubereats.com/ca")
    print(page.title())
    page.fill("#location-typeahead-home-input", "dirección")
    page.keyboard.press("Enter")
    print(page.url)
    page.close()

He intentado hacer lo mismo dirigiéndome específicamente al botón “Buscar comida” en la página de inicio. Por alguna razón, esto no cambia la página en realidad.
Cualquier ayuda sería apreciada, ¡gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás enfrentando está relacionado con el hecho de que la URL no cambia una vez que se hace clic en el botón “Encontrar comida”. Esto puede indicar que el sitio web está utilizando AJAX u otra tecnología para actualizar el contenido de la página dinámicamente, sin actualizar realmente la página o cambiar la URL.

    Un enfoque que puedes probar es esperar a que la página se cargue por completo después de hacer clic en el botón, y luego extraer los datos requeridos. Puedes usar el método wait_for_selector para esperar a que aparezca un elemento específico en la página antes de pasar al siguiente paso.

    Aquí tienes una versión modificada de tu código que espera a que aparezca el botón “Encontrar comida”, hace clic en él, y luego espera a que se cargue el contenido antes de imprimir la URL:

    from playwright.sync_api import sync_playwright
    
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto("https://www.ubereats.com/ca")
        print(page.title())
        page.fill("#location-typeahead-home-input", "dirección")
        find_food_button = page.wait_for_selector("[data-test-id='find-food-button']")
        find_food_button.click()
        page.wait_for_selector("[data-test-id='searching-screen-message']")
        print(page.url)
        page.close()
    

    En este ejemplo, primero localizamos el botón “Encontrar comida” en la página utilizando el método wait_for_selector, que espera hasta que el elemento sea encontrado o se agote el tiempo de espera. Luego hacemos clic en el botón utilizando el método click.

    Luego, esperamos a que aparezca un mensaje de carga en la página, lo cual indica que el contenido se está actualizando dinámicamente. Utilizamos una vez más el método wait_for_selector para esperar a que aparezca el mensaje.

    Finalmente, imprimimos la URL actual de la página y cerramos el navegador.

    Este enfoque debería funcionar para la mayoría de los sitios web que utilizan carga de contenido dinámico, y debería permitirte automatizar el proceso de ingresar una dirección en Uber Eats y navegar a la siguiente página.

    ¡Espero que esto te ayude! Hazme saber si tienes alguna otra pregunta o inquietud.

Comments are closed.