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
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);
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!