7

私のhtmlドキュメントには、次のコードがあります。

<label class="field" for="first_name">First Name:</label>
<span class="pull-right"><input type="text" id="first_name">
    name="first_name" ng-model="first_name">
</span>

これにより、横に「First Name」というラベルが付いたテキストボックスが表示されます。

次に、次のコードを使用して、テキスト ボックスに自分の名前を書き込みます。

element(by.model('first_name')).sendKeys('Frank');

このコードは、テキスト ボックスに Frank と書き込みますが、ここでの目標は、テキスト ボックスからテキストを読み取って、実際に私の名前が書き込まれていることを確認することです。私はこれを行うのに多くの問題を抱えています。

次のコードを使用して、テキスト ボックスから読み取ろうとしました。

expect(element(by.model('first_name')).getText()).to.equal('Frank');

しかし、私はこのエラーが発生します:

AssertionError: { Object (locator_, parentElementFinder_, ...) } が「Frank」と等しいと予想されます

また、私がやろうとすると:

console.log(element(by.model('first_name')).getText());

次のエラーが表示されます。

{ locator_: { findElementsOverride: [関数], toString: [関数: toString] }, parentElementFinder_: null, opt_actionResult_: { then: [関数: then], cancel: [関数: cancel], isPending: [関数: isPending] } , opt_index_: undefined, click: [関数], sendKeys: [関数], getTagName: [関数],
getCssValue: [関数], getAttribute: [関数], getText: [関数], getSize: [関数], getLocation: [関数]、
isEnabled: [関数]、isSelected: [関数]、submit: [関数]、clear: [関数]、isDisplayed: [関数]、getOuterHtml: [関数]、getInnerHtml: [関数]、toWireValue: [関数] }

を使用しようとすると、この同じエラーが発生しますgetAttribute('value')。エラーの正確な意味がわからず、 を使用するときに何を見ているのかよくわかりませんconsole.log()。私は分度器を使うのが初めてです。どんな助けでも大歓迎です。事前に感謝します。

編集: 完全な spec.js

var chai            = require('chai'),
    chaiAsPromised  = require('chai-as-promised');

chai.use(chaiAsPromised);

expect = chai.expect;

before(function() {
    // suite wide initial setup here
    browser.get("http://127.0.0.1:5000/");
    browser.waitForAngular();
});

it('Should redirect and load template',function(){
    element(by.id('authentication'))
        .element(by.css('.text-center'))
        .element(by.linkText('Click here'))
        .click();
    expect(browser.getCurrentUrl()).to.eventually.have.string('/#/home');
});

it('Should Enter name into text box', function(){
    element(by.model('first_name')).sendKeys('Frank');
    expect(element(by.model('first_name')).getAttribute('value'))
        .to.equal('Frank');
});
4

1 に答える 1

8

これは作業中の要素であるため、属性inputを読み取る必要があります。value

expect(element(by.model('first_name')).getAttribute('value')).toEqual('Frank');

実際の問題は、をオーバーライドしていることですexpect()。この場合、次を使用して手動で約束を解決する必要がありますthen()

element(by.model('first_name')).getAttribute('value').then(function (value) {
    expect(value).to.equal('Frank');
});
于 2015-01-26T20:34:29.847 に答える