Saya mempunyai halaman dengan berbilang kawasan teks yang terdiri daripada nama dinamik dan kelas yang sama. Ini bermakna saya tidak boleh memilihnya mengikut id, nama, kelas atau jenis.
Apa yang saya tahu ialah daripada 5 textarea, saya perlukan yang pertama, dan saya mahu menukar nilai textarea itu.
Bolehkah sesiapa memberitahu saya bagaimana untuk melakukan ini menggunakan chromedp? Telah mencuba selama dua hari tanpa kemajuan.
Cari jawapannya:
const n = document.querySelector('.elementor-repeater-fields:nth-child(2) textarea'); console.log(n);
Gunakan pseudo-class:first-child a> atau :nth-child untuk memilih elemen sasaran. Contohnya:
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) } }
Atas ialah kandungan terperinci chromedp Bagaimana untuk memilih kawasan teks tertentu daripada berbilang kawasan teks dengan nama dinamik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!