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