【问题标题】:getText is not a function error - Protractor (javascript)getText 不是函数错误 - Protractor (javascript)
【发布时间】:2017-04-27 13:50:51
【问题描述】:

我安装了 node.js 和量角器。我有使用 selenium-webdriver 的经验,但量​​角器让我发疯了!!!我对javascript也不是很熟悉。

这是我的代码的样子:

describe('My app', function() {

    var result = element(by.id('result-name'));
    var enterBtn = element(by.id('enter'));
    var clearFieldBtn = element(by.id('clear-field'); 

    it('should bring up components on load', function() {
        browser.get(`http://localhost:${process.env.PORT}`);
        browser.wait(until.titleContains('Sample App'), 500);
        browser.wait(until.presenceOf(browser.element(by.id('my-test-app'))), 500);

        expect(enterBtn).isPresent;
      });

    it('result should equal username', function () {
        browser.get(`http://localhost:${process.env.PORT}`);

        expect(clearFieldBtn).isPresent;
        expect(result.getText()).toEqual('John Smith'); //both tests pass without this line of code   

    });

});

最后一行“expect(result.getText()).toEqual('John Smith');”给我一个错误。我明白了:

expect(...).toEqual is not a function

任何帮助将不胜感激。我花了几个小时试图找到解决方案并尝试不同的事情。

我还想在 api 文档中实现 isPresent 函数,它是这样的:expect($('.item').isPresent()).toBeTruthy();

我尝试过:

expect(clearFieldBtn).isPresent().toBeTruthy();

但我知道 isPresent 不是函数...

【问题讨论】:

  • 您的标题具有误导性。问题/错误不是关于getText(),而是关于你的茉莉花功能toEqualtoContain 等。
  • 另外,您能否发布您的配置,您使用的是什么测试库?

标签: javascript selenium-webdriver protractor automated-tests


【解决方案1】:

该行上方的期望似乎很差。它应该是

expect(clearFieldBtn.isPresent()).toBeTruthy();

不确定这是否会导致下面一行出现奇怪的错误……只是想我会把它扔掉。你所有的量角器 API 都需要在期望中调用,因为 isPresent 不是 expect 的属性

【讨论】:

  • 还注意到您的 clearFieldBtn 元素缺少括号
  • 如果你只是在它自己的 it 块中运行 expect(true).toBeTruthy(),你会得到什么
  • 是的,如果您无法访问这些功能,听起来您甚至没有安装 Jasmine
  • Protractor 只是一个测试框架,你需要一个测试库来配合它。 getText 和量角器功能很好,但是你需要一个库(茉莉花)来使用toEqualtoContain 等。量角器应该默认使用 Jasmine,但你应该在你的配置中声明一个以确保,即framework: 'jasmine'
  • 实际上,我猜describeit 也来自茉莉花,所以也许这不是问题,因为它们不会引发错误......这是一个奇怪的问题。
【解决方案2】:

你有没有尝试过这些线路:

    clearFieldBtn.isPresent().then(function(bln) {
         expect(bln).toBe(true);
    });

    result.getText().then(function(tmpText) {
         expect(tmpText).toBe('John Smith');
    });

如果在 result.getText() 上仍然出现错误,请检查结果对象是否存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-12
    • 2012-04-07
    • 1970-01-01
    • 2019-03-31
    • 2015-06-27
    • 2011-06-20
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多