我第一次尝试使用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();
答案 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名称。
=)