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
Libérer: 2024-02-05 22:42:12
avant
687 Les gens l'ont consulté

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)
    }
}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal