1

我需要为 $_POST 添加一个值,特别是“端口”,这样我就可以告诉我的测试提交通过 fakemail。

fakemail 文档展示了如何使用 SimpleTest 向 $_POST 插入值:

$this->clickSubmit('Send', array('port' => 10025));

在 PHPUnit 中,这不起作用:

$this->click("//input[@value='Send']", array('port' => 10025));

我对测试背后的所有概念都非常陌生,所以这可能比我做的要简单。您将如何使用 PHPUnit/Selenium 完成工作?

4

1 回答 1

1

尚未在 phpunit 中对此进行测试,但在 Selenium IDE 中,您可以使用 javascript 更改隐藏字段。

测试页面:

<html><head></head><body>

<?php print_r($_POST); ?>

<br/><br/>
<form action="test.php" method="POST">
    <input type="hidden" id="hhh" name="hhh" value="orig"/>
    <input type="text" name="ttt"/>
    <input type="submit" name="sss"/>
</form>
</body></html>

脚本(从 firefox IDE 生成,所以没有测试过):

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class Example extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  {
    $this->setBrowser("*chrome");
    $this->setBrowserUrl("http://localhost/test.php");
  }

  public function testMyTestCase()
  {
    $this->type("ttt", "bbb");
    $this->runScript("javascript{ this.browserbot.getCurrentWindow().document.getElementById('hhh').value = 'new2'; }");
    $this->click("sss");
  }
}
?>

所以只需将port变量添加为隐藏字段并使用 javascript 设置值。

于 2011-02-08T19:48:57.190 回答