【问题标题】:Difference between protractor locators量角器定位器之间的区别
【发布时间】:2015-12-16 01:11:43
【问题描述】:

我正在阅读量角器指南: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'))

什么时候使用哪种定位器?有人可以澄清一下

【问题讨论】:

    标签: protractor


    【解决方案1】:

    它们是一样的。 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

    【讨论】:

    【解决方案2】:

    ptor.findElementelement 之间的区别在于,第一个应该用于没有 Angular 的页面,而第二个应该用于 Angular 的页面。这与量角器syncs with Angular的方式有关。第一个返回 WebDriver WebElement,第二个返回 Protractor ElementFinder

    但是,为了直接解决您的问题,by.cssprotractor.By.css 返回的定位器之间没有区别。 两者等价。全局by对象引用的对象与protractor.By引用的对象相同。

    来自 Protractor 的runner.js

    global.by = global.By = protractor.By;
    

    API 有两个版本。旧版本使用protractor.By,而新版本使用by。您可能经常会看到旧样式,但如果您有疑问,可以使用新样式并确保不会发生任何意外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多