chromepd问题记录

chromde点击事件卡住处理

err := chromedp.Run(ctx,
    chromedp.Navigate("urlstr"),
    chromedp.ActionFunc(func(ctx context.Context) error {
        var nodes []*cdp.Node
        if err := chromedp.Nodes("selecter", &nodes, chromedp.AtLeast(0).Do(ctx); err != nil { return err }
        if len(nodes) == 0 { return nil } // 当选择器没有选择到相应的元素时跳过,也可以做其他处理
        return chromedp.MouseClickNode(nodes[0]).Do(ctx)
    })
)

click时选择器无法选中具体元素处理

当遇到无法根据选择器选择具体的元素时,比如:“#app > div > div > div.page > div > a:last-child"无法选中最后的一个按钮时,可以将”#app > div > div > div.page > div > a"全部取出来,然后找到最后一个进行点击

err := chromedp.Run(ctx,
    chromedp.Navigate("urlstr"),
    chromedp.ActionFunc(func(ctx context.Context) error {
        var nodes []*cdp.Node
        if err := chromedp.Nodes("#app > div > div > div.page > div > a", &nodes, chromedp.AtLeast(0).Do(ctx); err != nil { return err }
        if len(nodes) == 0 { return nil }
        return chromedp.MouseClickNode(nodes[len(nodes)-1]).Do(ctx) // 选择的是最后一个元素
    })
)

根据某个元素中的文本的内容进行点击

selecor := //a[contains(normalize-space(),'下载')] | //a[contains(normalize-space(),'安装')] | //button[contains(normalize-space(),'下载')] | //button[contains(normalize-space(),'安装')] |
selecor写法是根据XPath中的文本内容函数处理,表示a标签或者button的内容中是否包含了"安装",“下载”

总结

仅记录遇到过的问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值