Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Javascript 通过存在自定义属性来定位元素_Javascript_Angularjs_Testing_Jasmine_Protractor - Fatal编程技术网

Javascript 通过存在自定义属性来定位元素

Javascript 通过存在自定义属性来定位元素,javascript,angularjs,testing,jasmine,protractor,Javascript,Angularjs,Testing,Jasmine,Protractor,如何在量角器中定位所有具有特定自定义属性的元素?我在Stackoverflow和net上发现了类似的问题,但它们使用xpath对标记进行限制 element(by.xpath('//div[@custom-attribute]')) 与上面的示例相反,我不想对标记施加限制,因为我们有具有相同自定义属性的不同标记。我想定位所有具有该属性的元素,而不考虑标记。这可能吗?您可以使用: 或者,通过$快捷方式: $$('[custom-attribute]'); [custom attribute]是

如何在量角器中定位所有具有特定自定义属性的元素?我在Stackoverflow和net上发现了类似的问题,但它们使用xpath对标记进行限制

element(by.xpath('//div[@custom-attribute]'))
与上面的示例相反,我不想对标记施加限制,因为我们有具有相同自定义属性的不同标记。我想定位所有具有该属性的元素,而不考虑标记。这可能吗?

您可以使用:

或者,通过
$
快捷方式:

$$('[custom-attribute]');

[custom attribute]
是一个匹配任何具有
custom attribute
属性的元素的自定义属性。

您不能使用类似于
document.querySelectorAll('div[attribute]')
?因为此自定义属性不仅在div元素上定义,还定义了按钮、超链接和其他标记,我不确定这是否可能。。除非我对所有其他标签都有这样的声明。那么?只需省去
div
。首先,不要在你的问题中编辑评论。我选择了dupe目标,因为它还询问如何“按属性”查找元素。@Cerbrus更正我的错误,该问题要求按“隐藏”的属性值查找元素。不是按属性名。普通的
查询选择器all
的结果不能传递给
元素。all()
?还是我错误地认为本地JS功能在那里可用?@Cerbrus是的,没有对
querySelectorAll()
的“直接”访问,但从理论上讲,您可以通过自定义定位器或在自定义定位器内部执行此操作-一些bult in量角器定位器实际上在内部使用
querySelectorAll
,例如,
by.repeater()
()。谢谢,这是个好问题(不过我没有否决你的答案)。我对-3有点惊讶。但是,由于这是量角器的“本机”查询选择器方法,无论如何,这是更好的答案。@Cerbrus是的,-3肯定太多了。好的一面是,你可以得到“对等压力”徽章(如果以前没有的话)。我尝试过这种方法,但我不确定如何迭代返回的集合。我试过foreach,甚至试着点击这个集合,看看它是否有用。我得到“找不到元素的可测试性”
$$('[custom-attribute]');