我在这里查看了量角器指南:https://github.com/angular/protractor/blob/master/docs/api.md#api-protractor
它说为了找到一个元素,我可以使用
var temp = element(by.css("someclass"));
or alternatively
var temp1 = ptor.findElement(protractor.By.css('someclass'))
何时使用哪种定位器?有人可以澄清
答案 0 :(得分:5)
他们是一样的。 element
是首选语法,因为它更短,因为您可以链接定位器并使用一些花哨的量角器功能。 Protractor扩展了webdriver api,这就是为什么你可以使用你在普通webdriver中使用的相同功能。
例如,以下表达式是等效的:
ptor.findElement(by.css('.foo')).getText()
element(by.css('.foo')).getText()
$('.foo').getText()
要查找多个元素,请使用:
ptor.findElements(by.css('.foo'))
element.all(by.css('.foo'))
$$('.foo')
api.md文档中有很多例子:
https://github.com/angular/protractor/blob/master/docs/api.md#elementfinderprototypeelement
答案 1 :(得分:2)
ptor.findElement
和element
之间的区别在于第一个应该使用没有 Angular的页面,而第二个用于 Angular的页面 。这与量角器syncs with Angular的方式有关。第一个返回WebDriver WebElement
,第二个返回一个Protractor ElementFinder
。
但是,要直接解决您的问题,by.css
和protractor.By.css
返回的定位器之间无差异。
两者是等效。全局by
对象引用的对象与protractor.By
引用的对象相同。
来自量角器' runner.js:
global.by = global.By = protractor.By;
API有两个版本。旧版本使用protractor.By
,而新版本使用by
。您可能经常看到旧式,但如果您有疑问,可以使用新款式,并确保不会发生任何意外情况。