1

応答データからフォーム属性値を取得するために xpath エクストラクタを使用しています。ただし、この応答データには、文字列「C&I」などのデータが含まれているため、次の SAXException が発生しています。

jmeter.extractor.XPathExtractor:処理中 のSAXException(substring-after(//form[@id='headerForm']/@action,'/dashboard.xhtml?')) エンティティ「I」への参照は「;」で終了する必要があります デリミタ。

データベースから取得されているため、このデータを制御することはできません。「Tidy(tolerant parser)を使う」にチェックを入れてみました。その結果、次の警告/エラーが発生します

エラー - jmeter.util.XPathUtil: TidyException: 行 35 列 31 - 警告: 空の <div> をトリミングしています

応答の 35 行目は次のとおりです。

`<div style="clear: both;"></div>`

その属性値を抽出することは、私にとってさらに処理するために不可欠です。

4

2 に答える 2

5

解決策があるすべてのものに関しては、それは迅速で汚いかもしれませんが、単一の問題に対する解決策は常にあります。

xpathextractorの代わりにjsoupを使用してHTMLの解析を行うことをお勧めします。特定のフォームのアクション属性を抽出しようとしていると想定しています。

ステップ1->jsoup-1.6.3.jarまたはその他のバージョンをJMETER_HOME\lib

ステップ2-> HTTPまたはその他BeanShell PostProcessorにを追加するSampler

ステップ3->スクリプトの大きなボックスに次のコードを貼り付けます:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

String html = prev.getResponseDataAsString(); // get response from your sampler
Document doc = Jsoup.parse(html);
String formAction = doc.select("#headerForm").attr("action");
vars.put("action", formAction);

HTMLセレクターはjqueryベースです。だから、それはかなり素晴らしくてきちんとしたことをすることができます。とにかく${action}、テストでさらに使用する変数が必要です。

アップデート

したがって、私が作成したjMeterポストプロセッサのコードに絡まることはありません。Html Extractorここで呼ばれるのはgithuburlです。

https://github.com/c0mrade/Html-Extractor

于 2012-07-12T12:51:58.497 に答える
1

ソース ドキュメントのストレイ&は、XML では合法ではありません。XML仕様から(強調鉱山)

アンパサンド文字 (&) と左山かっこ (<) は、マークアップ区切り文字として、またはコメント、処理命令、または CDATA セクション内で使用される場合にのみ、リテラル形式で表示できます。これらは、内部エンティティ宣言のリテラル エンティティ値内でも有効です。「4.3.2 整形式の解析済みエンティティ」を参照してください。他の場所で必要な場合は、数字参照または文字列 " & ;"を使用してエスケープする必要があります。および " < ;" それぞれ

パーサーは、エンティティ参照の開始として を解釈し&ています。エンティティ参照は、セミコロンで終了する必要があります。

ソース:

含めたエラーは(ほぼ確実に)無関係であることに注意してください。Tidy は、div にコンテンツが含まれていない (つまり、空である) ことを指摘しているだけです。

于 2012-07-11T21:36:25.597 に答える