Rumah >pembangunan bahagian belakang >Golang >chromedp Bagaimana untuk memilih kawasan teks tertentu daripada berbilang kawasan teks dengan nama dinamik

chromedp Bagaimana untuk memilih kawasan teks tertentu daripada berbilang kawasan teks dengan nama dinamik

WBOY
WBOYke hadapan
2024-02-05 22:42:12629semak imbas

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

Kandungan soalan

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


Jawapan betul


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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam