量角器“by.css()”与“$()”美元符号vs“$$()”'Bling Bling'

时间:2015-08-07 15:35:47

标签: javascript angularjs selenium testing protractor

我真的不明白$和$$命令的用途。我认为它们只是'by.css'的替代品,但为什么是$$?

<element id = "eId"></element>

我想,鉴于上述情况,这些都是等价的:

element(by.css('#eId'));

element($('#eId'));

然而,第一个有效,第二个没有。为什么,三者之间有什么区别?

docs没什么帮助。他们似乎暗示“$”仅用于链接,例如element(by.css('#eId')).element($('#childId'));或“选择第一个元素,然后选择第一个元素中的第二个元素。”但是,我看到过使用$来选择第一个元素的例子。

无论如何,这有很多文字“三者之间有什么区别(by.css,$和$$)?”

1 个答案:

答案 0 :(得分:30)

$$$只是方便的快捷方式。

$("selector")element(by.css("selector"))的替代方案。

$$("selector")element.all(by.css("selector"))的替代方案。

仅供参考,引自source code

ElementFinder.prototype.$ = function(selector) {
  return this.element(webdriver.By.css(selector));
};

ElementArrayFinder.prototype.$$ = function(selector) {
  return this.all(webdriver.By.css(selector));
};

最初实现它的actual commit