1

我有一个页面,其中包含一个带有一些输入元素的表单,包括一个文本区域。这些输入字段填充了一些值。将整个页面视为某个实体的编辑页面。Textarea 包含一个 XML 字符串,可以在普通浏览器(例如 firefox 和 chrome)中正确显示,如下所示:

<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。请注意,我根本不碰它。我可以加载页面并按下提交按钮,这一切都搞砸了。这只发生在 goutte 上,但不会发生在 selenium2 上。

所以问题是:我怎样才能强制 goutte 自动解释这些 html 实体并将它们作为正确的数据发送,而不是编码的混乱?

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 回答