0

私はいくつかの機能テストを行うためにセレンセレンを使用しています。ボディのJsonコンテンツを解析する必要があります。これがjsonです:

    {"access_token":"ab89978b-   
     74a1-41a6-81e7-7b520ea9d29f","token_type":"bearer","refresh_token":"38a3a34b-09c9-452e-
     b05b-6903770a877f","expires_in":1799,"scope":"read"}

次のSeleneseコマンドを使用しています。

<tr>
<td>store</td>
<td>
    javascript{
        var jsonstr = '${body}'
        var obj=JSON.parse(jsonstr); 
        var token=obj.access_token;
    }
</td>
<td>token</td>
</tr>

しかし、次のエラーが発生します。

コマンド実行に失敗しました。ログウィンドウからエラーの詳細については、https://groups.google.com/forum/#!forum/selenium-usersでユーザーグループを検索してください。エラーメッセージは次のとおりです。ステートメントの前

Json文字列を含むセレンの変数の内容を解析する方法を知っている人はいますか?

4

2 に答える 2

0

ストアの代わりにstoreEvalを使用する必要があります

<tr>
    <td>store</td>
    <td>{&quot;access_token&quot;: &quot;ab89978b-74a1-41a6-81e7-7b520ea9d29f&quot;, &quot;token_type&quot;: &quot;bearer&quot;, &quot;refresh_token&quot;: &quot;38a3a34b-09c9-452e-b05b-6903770a877f&quot;, &quot;expires_in&quot;: 1799, &quot;scope&quot;: &quot;read&quot;}</td>
    <td>json</td>
</tr>
<tr>
    <td>echo</td>
    <td>${json}</td>
    <td></td>
</tr>
<tr>
    <td>storeEval</td>
    <td>var x = '${json}'; var obj=JSON.parse(x); obj.access_token;</td>
    <td>bam</td>
</tr>
<tr>
    <td>echo</td>
    <td>${bam}</td>
    <td></td>
</tr>
于 2012-05-30T18:14:06.077 に答える
0

私はこの問題に少し苦労したので、ここで提供されているソリューションに基づいて、JSONオブジェクト自体を取得しようとしている人に役立つ可能性のある独自のソリューションを追加すると思いました。

<tr>
    <td>open</td>
    <td>/YOURURL/</td>
    <td></td>
</tr>
<tr>
    <td>storeText</td>
    <td>css=pre:contains("ELEMENTATTRIBUTEYOUWANTTOGRAB")</td>
    <td>json</td>
</tr>
<tr>
    <td>echo</td>
    <td>${json}</td>
    <td></td>
</tr>
<tr>
    <td>storeEval</td>
    <td>var x = '${json}'; var obj=JSON.parse(x); obj.ELEMENTATTRIBUTEYOUWANTTOGRAB;</td>
    <td>AC</td>
</tr>
<tr>
    <td>echo</td>
    <td>${AC}</td>
    <td></td>
</tr>

Selenium IDEとブラウザーは、実際に存在するhtmlラッピングを表示しません。コードを把握するのが難しくなります。右クリックするとソースがJSONオブジェクトとして表示されますが{ABCD...}、実際のソースにはオブジェクトがプリラップされています。<pre> </pre>エレメント。ここでは、その情報を使用して要素を選択し、それをJSONオブジェクトにロードして、そこから目的の属性を抽出します。

于 2016-10-24T18:49:59.203 に答える