【问题标题】:How can I programmatically click a button on a website如何以编程方式单击网站上的按钮
【发布时间】:2021-09-30 08:23:54
【问题描述】:

我知道在一些不同的代码中它就像await page.click,但我无法在go 中找到如何做到这一点。我正在尝试创建一个完全自动化的结帐脚本。这是我目前所拥有的,它只是打开了网站

package main

import (
    "log"
    "os/exec"
)

func main() {

    err := exec.Command("cmd", "/C", "start", "chrome.exe", "https://www.bestbuy.com/site/pny-geforce-gt1030-2gb-pci-e-3-0-graphics-card-black/5901353.p?skuId=5901353gi").Run()
    if err != nil {
        log.Println(err)

    }

【问题讨论】:

  • 标准库中没有提供开箱即用的功能。我相信你需要像github.com/chromedp/chromedp 这样的东西,我不知道如何使用它来触发按钮点击,你必须等待更有知识的人,或者你可以通过阅读文档和查看自己进行研究在 github 上的示例中。
  • 我刚刚注意到 github chromedp org/user(或其他名称)本身有一个 examples 存储库,其中包含 clickclick2 示例。
  • 这能回答你的问题吗? Click button with Chromedp

标签: html go button click element


【解决方案1】:

您可能想检查https://github.com/chromedp/chromedp 包来控制Chrome DevTool。

More Examples

package main

import (
    "context"
    "log"
    "time"

    "github.com/chromedp/chromedp"
)

func main() {
    // create chrome instance
    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()

    // navigate to a page, wait for an element, click
    var example string
    err := chromedp.Run(ctx,
        chromedp.Navigate(`https://golang.org/pkg/time/`),
        // wait for footer element is visible (ie, page is loaded)
        chromedp.WaitVisible(`body > footer`),
        // find and click "Expand All" link
        chromedp.Click(`#pkg-examples > div`, chromedp.NodeVisible),
        // retrieve the value of the textarea
        chromedp.Value(`#example_After .play .input textarea`, &example),
    )
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("Go's time.After example:\n%s", example)
}

【讨论】:

  • 我知道这可能是一个愚蠢的问题,但它说无法导入 github.com/chromedp/chromedp(在任何 C:\Program Files\ 中找不到包“github.com/chromedp/chromedp” Go\src\github.com\chromedp\chromedp(来自 $GOROOT) C\src\github.com\chromedp\chromedp(来自 $GOPATH)\Users\brand\go\src\github.com\chromedp\chromedp(来自$GOPATH) -- 我能做些什么来解决这个问题?
  • 不用担心。您需要安装软件包。 go get -u github.com/chromedp/chromedp 你需要运行:go mod init 然后go mod tidy
  • 老实说你们太棒了!在过去的 3 个月里,我一直遇到这个问题,最近才发现堆栈溢出。所以我的下一个问题是我应该在哪里输入元素以单击代码中的特定按钮? chromedp.Click(#pkg-examples > div, chromedp.NodeVisible), // 获取文本区域的值
  • 是的,您可以使用 css 选择器或您想要点击的按钮的 id。 github上的结帐示例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
相关资源
最近更新 更多