Codeception uncheckOption() 不起作用

Codeception uncheckOption() does not work

我正在为表格编写验收测试。测试检查复选框,测试复选框是否被选中,然后取消选中。

所以我认为有以下片段:

 <form>
    <div class="checkbox">
    <label for="agree"></label>
    <input type="checkbox" id="agree" name="agree">Agree to the conditions!
    </div>
</form>

在我的验收测试中我这样做:

/* works */
$I->seeElement('#agree');
$I->dontSeeCheckboxIsChecked('#agree');
$I->checkOption('#agree');
$I->seeCheckboxIsChecked('#agree');
/* This does not work?*/
$I->uncheckOption('#agree');
$I->cantSeeCheckboxIsChecked('#agree');

我正在使用 PhpBrowser 驱动程序,因为我无法让 WebDriver 驱动程序在公司防火墙后工作。

虽然seeElementseeCheckboxIsChecked确认复选框存在并被选中,但下面的uncheckOption不成功。

测试的输出是:

2) Failed to check checkbox in WelcomeCept (tests\functional\WelcomeCept.php)

 Step  I can dont see checkbox is checked "#agree"
 Fail  Failed asserting that 1 matches expected 0.

Scenario Steps:

     11. $I->canDontSeeCheckboxIsChecked("#agree") at tests\functional\WelcomeCept.php:18
     10. $I->uncheckOption("#agree") at tests\functional\WelcomeCept.php:17
     9. $I->seeCheckboxIsChecked("#agree") at tests\functional\WelcomeCept.php:15
     8. $I->checkOption("#agree") at tests\functional\WelcomeCept.php:14
     7. $I->dontSeeCheckboxIsChecked("#agree") at tests\functional\WelcomeCept.php:13
     6. $I->seeElement("#agree") at tests\functional\WelcomeCept.php:12

仅供参考,我使用的是 Phalcon 框架及其 Volt 模板引擎,该页面在浏览器中运行正常。

感谢任何帮助。

uncheckOptions 有效,问题是 CheckboxIsChecked 断言检查页面的来源而不是测试设置的表单值。

https://github.com/Codeception/Codeception/issues/2355#issuecomment-139166355

The $I->dontSeeCheckboxIsChecked() method runs an Xpath query against the generated HTML and looks for a checked attribute on the input element you specify.