Maison >développement back-end >Golang >chromedp Comment sélectionner une zone de texte spécifique parmi plusieurs zones de texte avec des noms dynamiques

chromedp Comment sélectionner une zone de texte spécifique parmi plusieurs zones de texte avec des noms dynamiques

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBavant
2024-02-05 22:42:12673parcourir

chromedp 如何从多个具有动态名称的文本区域中选择特定文本区域

Contenu de la question

J'ai une page avec plusieurs zones de texte composées de noms dynamiques et de la même classe. Cela signifie que je ne peux pas les sélectionner par identifiant, nom, classe ou type.

Tout ce que je sais, c'est que sur 5 zones de texte, j'ai besoin de la première et je veux changer la valeur de cette zone de texte.

Quelqu'un peut-il me dire comment procéder avec chromedp ? J'essaie depuis deux jours sans progrès.

Trouvez la réponse :

const n = document.querySelector('.elementor-repeater-fields:nth-child(2) textarea'); console.log(n);


Réponse correcte


utiliser la pseudo-classe:premier-enfant a> ou :nth-child pour sélectionner l'élément cible. Par exemple :

package main

import (
    "context"
    "fmt"
    "net/http"
    "net/http/httptest"
    "time"

    "github.com/chromedp/chromedp"
)

func main() {
    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, `
<html>
  <body>
    <textarea></textarea>
    <textarea></textarea>
    <textarea></textarea>
  </body>
</html>
`)
    }))
    defer ts.Close()

    opts := append(chromedp.DefaultExecAllocatorOptions[:],
        chromedp.Flag("headless", false),
    )
    ctx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
    defer cancel()
    ctx, cancel = chromedp.NewContext(ctx)
    defer cancel()

    err := chromedp.Run(ctx,
        chromedp.Navigate(ts.URL),
        chromedp.Sleep(time.Second),
        chromedp.SetValue(`body>textarea:first-child`, "hello world!", chromedp.ByQuery),
        chromedp.Sleep(time.Second),
        chromedp.SetValue(`body>textarea:nth-child(2)`, "hello chromedp!", chromedp.ByQuery),
        chromedp.Sleep(3*time.Second),
    )
    if err != nil {
        panic(err)
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer