バインディング要素のテキスト値を読み取ろうとしています。 関数getText()を使用して要素のテキスト値を読み取りましたが、機能しません。 他にそうする方法はありますか
ptor = protractor.getInstance();
ptor.get( 'http://www.angularjs.org');
ptor.findElement(protractor.By.input("yourName")).sendKeys("Julie");
var Greeting = ptor.findElement(protractor.By.binding( "{{yourName}}!"));
console.log(greeting.getText());
私は同じ問題を抱えています。 分度器を起動して実行しましたが、入力要素からデータを取得できないようです。 私のテストは:
it('should allow text entry into the userName field', function(){
userNameInput = ptor.findElement(protractor.By.input('user.userName'));
userNameInput.sendKeys(testUserName);
expect(userNameInput.getText()).toEqual(testUserName);
});
しかし、テストは次のように失敗します。
1)ログインテストサインインでは、userNameフィールドにテキストを入力できる必要がありますメッセージ:''は 'xacttester'と等しいと予想されます。
テストを見ると( ptor.driver.sleep(2000)
速度を落とす)、フィールドにテキストが入力されるのを見るのですが、 getText()
呼び出すと、空の文字列が返されます。
誰かが私が間違っていることについて何か考えがありますか?
@vishalshivnath webdriverと分度器がどのように機能するかについては、ドキュメントを確認してください。分度器のアクションはpromiseを返すため、おそらくpromiseオブジェクトです。
@tennisgent <input>
要素に対してgetText()が常に空であるという奇妙なWebドライバーの癖があります。 代わりにuserNameInput.getAttribute('value')
実行してみてください。
browser.findElement',
代わりに
it('should return the same result as browser.findElement', function() {
browser.get('index.html');
// var e = element(by.id('new_todo'));
var e = $('#new-todo');
e.sendKeys("foo");
expect(e.getAttribute('value')).toEqual(
"foo")
});
最も参考になるコメント
@vishalshivnath webdriverと分度器がどのように機能するかについては、ドキュメントを確認してください。分度器のアクションはpromiseを返すため、おそらくpromiseオブジェクトです。
@tennisgent
<input>
要素に対してgetText()が常に空であるという奇妙なWebドライバーの癖があります。 代わりにuserNameInput.getAttribute('value')
実行してみてください。