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.

Chromedp con Golang arroja “deadline exceeded” si el elemento no existe. ¿Hay alguna manera de extender el tiempo límite del contexto después de una fecha límite?

Tengo una función que utiliza chromedp para verificar si hay un modal de confirmación que aparece a veces. Si aparece, la función funciona, pero si se extiende el plazo de contexto, seguirá indicando que se excedió el plazo. Curiosamente, si se reduce el plazo en otras ejecuciones, funciona.

func check(page string) {
    opts := append(chromedp.DefaultExecAllocatorOptions[:],
        chromedp.UserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10<em>15</em>7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36"),
        chromedp.Flag("enable-automation", false),
        chromedp.Flag("headless", false),
    )
    ctx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
    defer cancel()
    ctx, cancel = chromedp.NewContext(ctx)
    defer cancel()

ctx, cancel = context.WithTimeout(ctx, 10*time.Second)
defer cancel()

err := chromedp.Run(ctx,
    chromedp.Navigate(page),
    chromedp.WaitReady(&quot;body&quot;, chromedp.ByQuery),
    chromedp.Click(`#ackBtn`, chromedp.ByID),
)
if err != nil {
    fmt.Println(&quot;No se encontró Ack&quot;)
    //return

}

ctx, cancel = context.WithTimeout(ctx, 30*time.Second)
defer cancel()

err2 := chromedp.Run(ctx,

    chromedp.Click(`#options &gt; div:nth-child(1) &gt; div.c-card__column2 &gt; a.c-card__btn.btn-new.btn-color-blue.btn-size-xxlarge.btn-width-auto.btn-max-width`, chromedp.ByID),
)
if err2 != nil {
    fmt.Println(&quot;salido con error&quot;, err)

}

“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    La función anterior utiliza ChromeDP para comprobar si hay una ventana modal de reconocimiento que aparece. Si la ventana modal está presente, la función funciona como se espera. Sin embargo, si el plazo de tiempo del contexto se extiende, la función seguirá indicando que el plazo ha sido excedido. Si el plazo es reducido en otras ejecuciones, la función funciona como se espera.

Comments are closed.