Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 我如何找到选择器,例如。在Dream.js中单击?_Css_Node.js_Nightmare - Fatal编程技术网

Css 我如何找到选择器,例如。在Dream.js中单击?

Css 我如何找到选择器,例如。在Dream.js中单击?,css,node.js,nightmare,Css,Node.js,Nightmare,我正在尝试使用梦魇.js自动抓取网页。我是一名系统管理员,对Node.js或CSS不太熟悉 我已经能够让噩梦输入并点击几个按钮让我登录-我通过使用Chrome开发工具Inspect找到了选择器。不幸的是,噩梦需要什么,或者我认为它需要什么,是不能粘贴的?例如,我正在使用的登录用户名框,这是在噩梦中使用的: .insert('input#username.form-control', 'username') 在Chrome开发工具中,在元素中,这就是悬停在GUI元素上的内容,并且是“属性”中的第

我正在尝试使用梦魇.js自动抓取网页。我是一名系统管理员,对Node.js或CSS不太熟悉

我已经能够让噩梦输入并点击几个按钮让我登录-我通过使用Chrome开发工具Inspect找到了选择器。不幸的是,噩梦需要什么,或者我认为它需要什么,是不能粘贴的?例如,我正在使用的登录用户名框,这是在噩梦中使用的:

.insert('input#username.form-control', 'username')
在Chrome开发工具中,在元素中,这就是悬停在GUI元素上的内容,并且是“属性”中的第一行,但是如果我使用“复制选择器”,我会得到

#用户名

复制Xpath:

/*[@id=“username”]

复制元素:


感谢您的背景介绍,但我相信您的问题可以简化为询问可以使用什么jQuery选择器访问
策略测试仪

这将访问元素
$('button[class^=“dpl-button_quo;])
。这里的缺点是,这个类并没有什么独特之处,这意味着拥有这个类的所有*元素都将应用您的单击事件

注意,这个元素包含多个属性,这意味着这里有许多选项。但是,要知道,DOM中的其他元素可能具有相同的属性,这取决于您非常关注的属性,因此这里的关键是找到唯一的元素。大多数情况下,我们可以将ID应用于元素,只要ID在DOM中是唯一的,您就可以简单地使用
$(“#YourUniqueId”)
访问该特定元素,而不访问其他元素

关于您在帖子中所放置的不正确内容,需要注意的一点是,您试图通过使用元素文本作为ID来访问元素(例如,
。单击('button#Policy Tester')
)。元素文本不是它的ID

这里有几个链接可能会帮助那些需要关于选择器的可靠参考的人:

修订版更新


研究了一下Dream.js,请尝试
单击('button.dpl-button\uuuuuuu jGBcY')
以查找元素。

感谢您的背景知识,但我相信您的问题可以浓缩为询问可以使用什么jQuery选择器访问
策略测试仪

这将访问元素
$('button[class^=“dpl-button_quo;])
。这里的缺点是,这个类并没有什么独特之处,这意味着拥有这个类的所有*元素都将应用您的单击事件

注意,这个元素包含多个属性,这意味着这里有许多选项。但是,要知道,DOM中的其他元素可能具有相同的属性,这取决于您非常关注的属性,因此这里的关键是找到唯一的元素。大多数情况下,我们可以将ID应用于元素,只要ID在DOM中是唯一的,您就可以简单地使用
$(“#YourUniqueId”)
访问该特定元素,而不访问其他元素

关于您在帖子中所放置的不正确内容,需要注意的一点是,您试图通过使用元素文本作为ID来访问元素(例如,
。单击('button#Policy Tester')
)。元素文本不是它的ID

这里有几个链接可能会帮助那些需要关于选择器的可靠参考的人:

修订版更新


如果您稍微研究了一下Dream.js,请尝试
单击('button.dpl-button\uuuuuuu jGBcY')
以查找元素。

有很多方法可以获得正确的选择器。使用检查元件等

方式1 从“检查元素”中选择“复制选择器”,大多数情况下它都可以工作。您不复制元素,而是复制选择器

方式2 下面是一个在chrome中实现的简单方法

  • 安装
  • 然后,在您想要刮取的任何页面上,打开selectorgadget并选择元素
  • 这是您需要的元素选择器
  • 使用它

有很多方法可以找到合适的选择器。使用检查元件等

方式1 从“检查元素”中选择“复制选择器”,大多数情况下它都可以工作。您不复制元素,而是复制选择器

方式2 下面是一个在chrome中实现的简单方法

  • 安装
  • 然后,在您想要刮取的任何页面上,打开selectorgadget并选择元素
  • 这是您需要的元素选择器
  • 使用它

有趣-如果我在Chrome开发工具控制台中键入
document.querySelector('button[class^=“dpl-button”]”)
,它只返回一个结果,并且它与我遇到问题的按钮不同。@mfinin-显然,在包含该类的页面上有多个元素,`……querySelector(…`将返回找到的第一个元素,这是
querySelector
的预期行为。请参阅我在这方面留下的注释。如上所述,您需要为
querySelector
找到元素的独特之处,以将DOM查询隔离到您正在查找的元素。此外,如上所述,还需要一个为元素添加一个ID并查询该ID。@mfini-同样,我可能不应该质疑这一点,但为什么你要加载jQuery,然后使用纯javascript函数,如
querySelector
?我不知道你问我是否加载jQuery是什么意思。我说我所做的就是我所做的一切。我的问题描述了我的评论是我在dev工具控制台中尝试过的。我没有加载jQuery;我假设噩梦和/或节点为我做了这件事?啊哈-但这起作用了:``。单击(“#content_container>div>div>div>div>div.sub-header>按钮”)`这是所需按钮的选择器。有趣-如果我键入
document.querySelector('button[clas