量角器中的AngularJS E2E测试失败

时间:2015-02-26 23:32:06

标签: javascript angularjs testing protractor e2e-testing

我基本上都在尝试为此网页编写测试:http://www.talklocal.com/mobile/#/step1

我想填写表单中的信息,然后点击下一步按钮。虽然测试应该将我重定向到表单的第2步(检查url),但它不会反而失败。测试代码:

describe('going from step1 to step 2', function() {

        //fill out step 1 form
        beforeEach(function() {
            browser.get('index.html');

            element(by.model('Request.categoryID')).click();
            element(by.css('option[value=0]')).click();
            element(by.class('where-text ng-pristine ng-valid').sendKeys('20902'));

            element(by.class('btn action-button')).click();
        });

        it('should be on the step2 page', function() {

            browser.getLocationAbsUrl().then(function(url) {
                expect(url.split('#')[1]).toBe('/step2');
            });
        });
    });

终端中的错误消息:

  1) myApp going from step1 to step 2 should be on the step2 page
   Message:
     TypeError: Object [object Object] has no method 'class'
  2) myApp going from step1 to step 2 should be on the step2 page
      Message:
      Expected '/step1' to be '/step2'.
  3 tests, 5 assertions, 2 failures

我已经搜索了错误,并且一直在尝试为元素(by.attribute)方法插入不同的类和属性,但无济于事。

我很感激有关此问题的任何和所有反馈。谢谢!

2 个答案:

答案 0 :(得分:2)

没有by.class定位器,如果您想依赖课程,请改用by.css

element(by.css('.where-text.ng-pristine.ng-valid').sendKeys('20902'));
element(by.css('.btn.action-button')).click();

仅供参考,还有by.className选择器:

element(by.className('action-button')).click();

答案 1 :(得分:0)

Check protractor API doc
by.class无效。您可以使用模型或按钮文本作为按钮。

element(by.model('User.zipcode').sendKeys('20902'));
element(by.buttonText('Next')).click();