标签: chromedp

How to get the HTTP response body using chromedp?

Using github.com/knq/chromedp, a go package to drive web browsers using Chrome Debugging Protocol, I can navigate to webpages, update forms and submit forms, but I need to retrieve a HTTP response body and haven't figured out how to yet. I'd like to be able to retrieve the HTTP response body for a JSON response (not HTML).

From looking in the code, it seems the HTTP response body is in the CachedResponse.Body property:

https://github.com/knq/chromedp/blob/b9e4c14157325be092c1c1137edbd584648d8c72/cdp/cachestorage/types.go#L30

And that it should be accessible …

google-chrome http browser-automation go chromedp

5
推荐指数
1
解决办法
3877
查看次数

如何在 docker 中运行 chromedp

我正在尝试在docker中运行chromedp。我的main.go

package main

import (
    "context"
    "log"
    "time"

    "github.com/chromedp/chromedp"
)

func main() {
    log.SetFlags(log.LstdFlags | log.Llongfile)
    ctx, cancel := chromedp.NewContext(
        context.Background(),
        chromedp.WithLogf(log.Printf),
    )
    defer cancel()

    // create a timeout
    ctx, cancel = context.WithTimeout(ctx, 15 * time.Second)
    defer cancel()

    u := `https://www.whatismybrowser.com/detect/what-is-my-user-agent`
    selector := `#detected_value`
    log.Println("requesting", u)
    log.Println("selector", selector)
    var result string
    err := chromedp.Run(ctx,
        chromedp.Navigate(u),
        chromedp.WaitReady(selector),
        chromedp.OuterHTML(selector, &result),
    )
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("result:\n%s", result)
}
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM golang:latest as build-env …
Run Code Online (Sandbox Code Playgroud)

docker chromedp

3
推荐指数
1
解决办法
2491
查看次数

如何使用Chrome无头带chromedp?

我正在使用chromedp,它具有专注于元素,填写文本等功能.Chrome 59具有跨平台无头支持.它允许在无头/服务器环境中运行Chrome.要通过DevTools远程调试协议使用,请使用--headless命令行标志启动普通的Chrome二进制文件(仅适用于Linux):

$ google-chrome --headless --disable-gpu --remote-debugging-port = 9222 https://www.google.fr

如何判断chromedp- 发送无头旗帜以及其他旗帜?

testing google-chrome go chromedp

1
推荐指数
2
解决办法
2496
查看次数

使用 Chromedp 单击按钮

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

我基本上需要单击一个按钮,例如 W3C 学校网站上的“Click me”按钮。我需要使用valueHTML 标记的 HTML 属性来过滤该按钮input(因为没有要定位的特定 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 Code Online (Sandbox Code Playgroud)

dom go web-scraping google-chrome-devtools chromedp

1
推荐指数
1
解决办法
8189
查看次数