2016-07-22 7 views
0

Reactフロントエンドアプリケーションのテストを書いています。 テストの1つは、サーバーから値が返された方法をチェックする必要があります。 はつまり、私は次のスパンを持っている:webdriverioを使ってReact wrapped spanからテキストを取得

<span id='result'> 
    <!-- our version of react wraps the resulting text by default --> 
    <span data-reactid>the actual result</span> 
</span> 


// test.js 
getResult() { 
    let a = browser.getText('#result span'); 
    console.log('a:', a); 
} // unfortunately, getting it this way will mean having to rewrite the test once we upgrade to a newer version of React (after 15 is does not do the wrapping anymore) 

だから、基本的に..私はによって生成されたスパンのどちらかがIDまたはクラス...または他のを持って反応するようにテキスト値を取得できますかDOM構造の変更がテストを書き直さなければならないというわけではありません。

+0

あなたは 'browser.getText( '#result')'だけを試しましたか? –

+0

はい..しかし、反応はいつもものの周りにをラップするので、私はbrowser.getText( '#result span');を使用しなければなりません。 – JeanAlesi

答えて

1

webDriver APIだけではわかりませんが、値を取得するにはjavascriptを使用できます。このような何か:

var id = 'result'; 

client.execute(function(a) { 
    return document.getElementById(a).textContent; 
}, id).then(function(ret) { 
    console.log(ret.value); // outputs: the actual result 
}); 

のTextContentを使用することにより、あなたのセレクタは、親スパンを対象としていても、テキストを出力するとき、それは子供に<span>タグを無視します。

+0

優秀! webdriverを使って、私は親を取得し、これを実行します。ありがとう。 – JeanAlesi

関連する問題