1

テキストエリアを含むいくつかの入力要素を含むフォームを含むページがあります。これらの入力フィールドには、いくつかの値が入力されています。このページ全体を、エンティティの編集ページと考えてください。Textarea には、通常のブラウザ (firefox や chrome など) 内で適切に表示される XML 文字列が含まれており、次のようになります。

<front>

  <!-- top row -->
    <cell>
      <page>8</page>
    </cell>

</front>

しかし、goutte mink ドライバーでテスト ケースを実行すると、ページが読み込まれ、textarea の値が次のように特殊文字でエンコードされます。

&lt;front&gt;&#13;
&#13;
    &lt;!-- top row --&gt;&#13;
        &lt;cell&gt;&#13;
            &lt;page&gt;8&lt;/page&gt;&#13;
        &lt;/cell&gt;&#13;
&#13;
&lt;/front&gt;&#13;

そして、送信ボタンを押すと、混乱がサーバーに送信され、最初の正しいxmlの代わりに保存されます。一切触れませんのでご了承ください。ページを読み込んで送信ボタンを押すだけで、すべてが台無しになります。これは痛風でのみ発生しますが、たとえば selenium2 では発生しません。

問題は、これらの html エンティティを goutte に自動的に解釈させ、エンコードされた混乱ではなく、正しいデータとして送信するにはどうすればよいですか?

4

1 に答える 1

1

それに対する解決策はありません。Goutte/Guzzle の正常な動作のようです。回避策として、次の解決策に行き着きました。Goutte ドライバーが使用されている場合は、すべての<textarea>要素のページ コンテンツをチェックし、見つかった場合はそれぞれのコンテンツを取得し、次のように単純に再挿入します。

$elements = $this->pageContent->findAll('xpath', '//textarea');
foreach ($elements as $element) {
    $element->setValue($element->getText());
}
于 2013-10-15T07:39:36.240 に答える