首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点击Chromedp按钮

点击Chromedp按钮
EN

Stack Overflow用户
提问于 2019-03-23 17:51:26
回答 2查看 6.1K关注 0票数 1

我正在尝试使用围棋库Chromedp从网页上抓取一些数据。

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

下面的代码似乎永远挂在初始网页上,而不单击按钮。

  • 为什么下面的代码不点击按钮?
  • Chromedp是在使用“标准”xpath过滤器还是什么?我认为Chromedp中选择器的语法是某种标准语法,例如Selenium,但我无法找到一种方法来了解这些选择器的规则。在Chromedp选择器中构建过滤器的语法规则是什么?
  • 还有其他不是源代码或Go文档的Chromedp文档源吗?
代码语言:javascript
复制
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),
    }
}

另外,当运行上面的代码时,我会看到各种各样的日志,但基本上我看到这个日志被一次又一次地打印出来,这似乎意味着标签不在那里,但是它确实存在,我不知道如何为选择器使用哪种语法?

代码语言:javascript
复制
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}}
EN

回答 2

Stack Overflow用户

发布于 2019-11-18 13:37:58

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

代码语言:javascript
复制
chromedp.Click(`//*[@value="Click me"]`, chromedp.BySearch)
票数 5
EN

Stack Overflow用户

发布于 2019-03-23 19:58:50

我不知道你的具体语言模式,但按钮是在一个iframe。通常,必须切换到iframe才能访问元素,或者在css中,您可以使用深度组合器。

对于给定的页面,应该是

代码语言:javascript
复制
*/deep/[value="Click me"]

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55316689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档