checkField()没有检查貂皮

时间:2016-11-17 10:14:42

标签: php behat mink

我第一次尝试使用checkField(),它找到了复选框,但没有检查。

html:

<label>
    <input class="sr-only" value="on" type="checkbox">
    <span>I want an open return</span>
<label>

查看代码:

$this->getSession()->getPage()->checkField("I want an open return");

我也尝试过:

$this->getSession()->getPage()->find("css", "input[type=checkbox].sr-only")->check();

两者都没有返回任何错误,但我可以看到复选框在运行测试时没有检查。

以下代码按预期返回bool(false):

$this->getSession()->getPage()->find("css", "input[type=checkbox].sr-only")->isChecked();

2 个答案:

答案 0 :(得分:0)

checkField()可能不起作用,因为这依赖于元素的value属性,如果是true/false并且您有on/off将无法评估元素的状态复选框,同样适用于check()

作为check的替代方法,您可以找到元素click()

find("css", "input[type=checkbox].sr-only")->click();

检查是否使用isChecked()检查是否会因同样的原因而失败。

您可能需要进行自定义验证,例如获取value属性的值并检查它是on还是off并根据需要抛出异常或返回状态。

要记住的事项:
  - 检查页面并检查选择器是否正常   - 确保选择器只找到一个元素,或者列表中找到的第一个元素是您需要的元素   - 确保在需要时等待元素   - 使用页面对象   - 包含此单击/检查的类应该扩展Page对象,该行应如下所示:

$this->find("css", "input[type=checkbox].sr-only")->click();

答案 1 :(得分:0)

最后,使用以下代码行将“输入”更改为“标签”后,它可以正常工作:

  

$ this-&gt; getSession() - &gt; getPage() - &gt; findAll(“css”,“。div-name   .second-div-name label“)[0] - &gt; click();

我的复选框输入位于两个div中,因为我上面有两个div名称。

=)