如何使用Javascript选择Google搜索栏

如何使用Javascript选择Google搜索栏,javascript,html,google-chrome,google-chrome-extension,css-selectors,Javascript,Html,Google Chrome,Google Chrome Extension,Css Selectors,我正在使用Chrome扩展名“Shortkeys”编写快捷可执行Javascript代码,在浏览谷歌搜索时选择谷歌搜索栏。重要提示:我不是要选择Chrome的地址栏,而是谷歌网站上的实际搜索栏。我使用“inspect element”找到了搜索栏元素,并发现它位于类为“a4bIc”的div中。搜索栏元素的第一个标记是“input”。所以我的代码是: var x = document.querySelectorAll("div.a4bIc input")[document.selectedResu

我正在使用Chrome扩展名“Shortkeys”编写快捷可执行Javascript代码,在浏览谷歌搜索时选择谷歌搜索栏。重要提示:我不是要选择Chrome的地址栏,而是谷歌网站上的实际搜索栏。我使用“inspect element”找到了搜索栏元素,并发现它位于类为“a4bIc”的div中。搜索栏元素的第一个标记是“input”。所以我的代码是:

var x = document.querySelectorAll("div.a4bIc input")[document.selectedResultId]
只是它没有选择搜索栏。我遗漏了什么?

三条建议:

  • 从谷歌搜索HTML的结构来看,为了可靠地选择搜索输入,最好使用“name”属性。要使用的选择器是
    [name='q']

  • 返回一个对象。如果我没有弄错的话,那么您不能使用ID访问
    节点列表
    的成员(这与非常类似的
    HTMLCollection
    对象形成对比。不要担心,如果它看起来令人困惑,那是因为它是!)。对于这样的简单查找,我建议使用,它将直接返回第一个选定的节点

  • 根据你想用谷歌搜索栏做什么,你似乎需要将
    .focus()
    进行某种组合。在我刚才的测试中,我只能通过启动focus然后单击after来获得建议的下拉列表

  • 把这三个因素放在一起:

    function openGoogleSearchUI(){
      let searchInput = document.querySelector("[name='q']");
      searchInput.focus();
      searchInput.click();
    }
    
    当然,您可以根据需要调整对输入所做的操作,或者只使用
    document.querySelector
    行直接获取输入元素


    买主警告:我只能在我刚刚在英国收到的桌面Chrome上的谷歌搜索用户界面上看到这一点。不能保证将来它会以相同的方式工作,也不能从不同的设备上工作,因为谷歌可以随时更改代码的结构。

    这是什么
    文档。selectedResultId
    等于?使用
    文档尝试。getElementsByClassName(“gLFyf gsfi”)[0]它将返回输入元素。您可以使用
    value
    属性访问输入元素的值。它可以工作!非常感谢。我将searchInput.click()替换为searchInput.select()以突出显示文本以便于替换