Heim >Backend-Entwicklung >Golang >chromedp So wählen Sie einen bestimmten Textbereich aus mehreren Textbereichen mit dynamischen Namen aus

chromedp So wählen Sie einen bestimmten Textbereich aus mehreren Textbereichen mit dynamischen Namen aus

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBnach vorne
2024-02-05 22:42:12693Durchsuche

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

Frageninhalt

Ich habe eine Seite mit mehreren Textbereichen, die aus dynamischen Namen und derselben Klasse bestehen. Das bedeutet, dass ich sie nicht nach ID, Name, Klasse oder Typ auswählen kann.

Ich weiß nur, dass ich von den fünf Textbereichen den ersten benötige und den Wert dieses Textbereichs ändern möchte.

Kann mir jemand sagen, wie man das mit chromedp macht? Ich habe es zwei Tage lang versucht, ohne Fortschritte.

Finden Sie die Antwort:

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


Richtige Antwort


Pseudoklasse verwenden:first-child a> oder :nth-child, um das Zielelement auszuwählen. Zum Beispiel:

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)
    }
}

Das obige ist der detaillierte Inhalt vonchromedp So wählen Sie einen bestimmten Textbereich aus mehreren Textbereichen mit dynamischen Namen aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen