首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用“`chromedp`”导航Chrome设置?

如何使用“`chromedp`”导航Chrome设置?
EN

Stack Overflow用户
提问于 2021-09-29 04:56:59
回答 1查看 408关注 0票数 0

我试图在go中使用chromedp浏览Chrome设置页面。

完整的示例是这里,但要点是一些非常基本和简单的内容:

代码语言:javascript
复制
//...
if err := cdp.Run(ctx,
    cdp.Navigate(`chrome://settings/content/location`),
    cdp.SendKeys(`#input`, "hello"),
); err != nil && !strings.Contains(err.Error(), "net::ERR_ABORTED") {
    log.Fatal(err)
}
//...

表面上,chrome://settings/content/location的设置页面有一个DOM,搜索字段看起来像一个输入字段(带有ID #input)。然而,试图通过chromedp与其交互却失败了:chromedp似乎根本找不到它。

对于一些背景,我试图配置Chrome的某些方面,即自动拒绝位置请求,这些请求似乎没有命令行标志。或者至少我找不到。上面的示例与输入字段交互,因为它似乎更容易选择。

我真正想要的是点击单选按钮,上面写着“不要让网站看到你的位置”。类似于上面的输入字段,我无法找出导致chromedp选择特定单选按钮的正确咒语。如果有别的办法来实现这一点,我会全神贯注的。但是,如果可能的话,我希望避免需要一个预填充的userdir。我是chromedp的新手,所以如果这是微不足道的事情,我很抱歉。然而,我却找不到答案。有一个关于硒的类似问题,但我认为chromedp可能有足够的不同,因此答案可能也不同。

EN

回答 1

Stack Overflow用户

发布于 2022-05-18 06:27:16

您无法找到该元素,因为它是一个阴影元素。使用chromedp,您可以使用chromedp.ByJSPath搜索阴影元素。下面是从https://github.com/chromedp/chromedp/issues/1050#issuecomment-1085474910复制的一个示例

代码语言:javascript
复制
package main

import (
    "context"
    "log"

    "github.com/chromedp/chromedp"
)

func main() {
    ctx, cancel := chromedp.NewContext(context.Background())
    defer cancel()

    if err := chromedp.Run(ctx,
        chromedp.Navigate("chrome://settings/handlers"),
        chromedp.Click(`document.querySelector("body > settings-ui").shadowRoot.querySelector("#main").shadowRoot.querySelector("settings-basic-page").shadowRoot.querySelector("#basicPage > settings-section > settings-privacy-page").shadowRoot.querySelector("#pages > settings-subpage > protocol-handlers").shadowRoot.querySelector("#protcolHandlersRadioBlock")`, chromedp.ByJSPath),
    ); err != nil {
        log.Fatal(err)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69370613

复制
相关文章

相似问题

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