首頁 > 後端開發 > Golang > chromedp 如何從多個具有動態名稱的文字區域中選擇特定文字區域

chromedp 如何從多個具有動態名稱的文字區域中選擇特定文字區域

WBOY
發布: 2024-02-05 22:42:12
轉載
628 人瀏覽過

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

問題內容

我有一個頁面,其中有多個文字區域,這些文字區域由動態名稱和相同的類別組成。這意味著我無法透過 id、名稱、類別或類型來選擇它們。

我所知道的是,在 5 個文字區域中,我需要第一個,我想更改該文字區域的值。

誰能告訴我如何使用 chromedp 做到這一點?嘗試了兩天了,沒有任何進展。

找到答案:

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


#正確答案


使用偽類別:first-child a> 或:nth-child 進行選擇目標元素。例如:

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)
    }
}
登入後複製

以上是chromedp 如何從多個具有動態名稱的文字區域中選擇特定文字區域的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板