量角器.text()或.html()没有定义?

时间:2015-08-06 22:10:11

标签: jquery coffeescript jasmine protractor

我是量角器(使用Coffeescript)的新手,当我运行以下测试用例时,我收到此错误。

    it 'Check if the visitor count is incremented', ->
        expect(By.css('#total-visitor-value').text().length).toBeTruthy()

我收到此错误:

✗ Check if the visitor count is incremented (0.016 secs)
  - TypeError: Object By.cssSelector("#total-visitor-value") has no method 'text'

我不确定我做错了什么?有人可以解释一下吗?

3 个答案:

答案 0 :(得分:1)

我认为使用的方法是getText()而不是text()

试试这个: expect(by.css('#total-visitor-value').getText().length).toBeTruthy()

答案 1 :(得分:1)

您忘记引用该元素。此外,您的CSS查找是通过其ID值查找元素,因此请使用by.id。 .getText()调用返回一个promise,你必须考虑它的解析。你的测试应该是这样的:

expect(element(by.id('total-visitor-value')).getText().length).toBeTruthy();

以下是量角器定位器的参考:http://angular.github.io/protractor/#/locators

如果你愿意,你仍然可以使用by.css引用它(你的引用是正确的)但是by.id更精确。

答案 2 :(得分:0)

首先,是的,您正在寻找的方法是getText()。另外,我不会检查文本的.length,而是使用jasmine-matchers中的toBeNonEmptyString()茉莉花匹配器:

expect(element(by.css('#total-visitor-value')).getText()).toBeNonEmptyString();

请注意可读性。