【问题标题】:Click button with Chromedp单击带有 Chromedp 的按钮
【发布时间】:2019-08-14 10:45:22
【问题描述】:

我正在尝试使用 Go 库 Chromedp 从网页中抓取一些数据。

我基本上需要点击一个按钮,例如 W3C School 网站上的“点击我”按钮。我需要使用input HTML 标记的value HTML 属性过滤该按钮(因为没有特定的目标ID,并且大多数Chromedp 示例使用基于ID 属性的选择器) .

以下代码似乎永远挂在初始网页上,而无需单击按钮。

  • 为什么下面的代码没有点击按钮?
  • Chromedp 是使用一些“标准”xpath 过滤器还是什么?我认为 Chromedp 中选择器的语法是您可以找到的某种标准语法,例如也适用于 Selenium,但我找不到了解这些选择器规则的方法。 在 Chromedp 选择器中构建过滤器的语法规则是什么?
  • 除了源代码或 Go 文档之外,还有其他 Chromedp 文档来源吗?
package main

import (
    "context"
    "log"
    "time"

    "github.com/chromedp/chromedp"
)

func main() {
    var err error

    // create context
    ctxt, cancel := context.WithCancel(context.Background())
    defer cancel()

    // create chrome instance
    c, err := chromedp.New(ctxt, chromedp.WithLog(log.Printf))
    if err != nil {
        log.Fatal(err)
    }

    // run task list
    err = c.Run(ctxt, clickStuff())
    if err != nil {
        log.Fatal(err)
    }

    // shutdown chrome
    err = c.Shutdown(ctxt)
    if err != nil {
        log.Fatal(err)
    }

    // wait for chrome to finish
    err = c.Wait()
    if err != nil {
        log.Fatal(err)
    }

    log.Printf("DONE")
}

func clickStuff() chromedp.Tasks {
    return chromedp.Tasks{
        chromedp.Navigate(`https://www.w3schools.com/TAGS/tryit.asp?filename=tryhtml5_input_type_button`),
        chromedp.Click(`input[@value='Click me']`, chromedp.NodeVisible),
        chromedp.Sleep(5 * time.Second),
    }
}
2019/03/23 17:43:01 <- {"id":25,"method":"DOM.performSearch","params":{"query":"input[@value='Click me']"}}
2019/03/23 17:43:01 -> {"id":25,"result":{"searchId":"1000014442.18","resultCount":0}}

【问题讨论】:

    标签: go dom web-scraping google-chrome-devtools chromedp


    【解决方案1】:

    您可以使用 BySearch 选择器选择 html 属性:

    chromedp.Click(`//*[@value="Click me"]`, chromedp.BySearch)
    

    【讨论】:

      【解决方案2】:

      我不知道您的特定语言范例,但该按钮位于 iframe 内。通常必须切换到该 iframe 才能访问元素,或者在 css 中您可以使用深度组合器。

      对于给定的页面,这将是

      */deep/[value="Click me"]
      

      快速的 google 显示可以通过 BySearch 应用 css 选择器查询

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-26
        • 2016-09-06
        • 2019-02-27
        • 1970-01-01
        • 2015-10-18
        相关资源
        最近更新 更多