Behat CSS选择器 - 按类查找只能使用第一个类

时间:2016-06-02 10:41:40

标签: traversal behat

方案

假设您有一个包含多个CSS类的输入字段,例如:

<input class="form-control existing-user" value="Darth Darth Binks"/>

在behat步骤中,您希望通过CSS类查找输入元素来找到它的值。

此作品

$field = $this->getPage()->findAllBy('css', 'form-control')[0]->getValue();
// $field is now "Darth Darth Binks"

这不起作用

$field = $this->getPage()->findAll('css', 'existing-user')[0]->getValue();
// $field is now null

问题

这有什么区别?如果我寻找其中一个不是先编写的类,我是否需要做一些特定的事情?

1 个答案:

答案 0 :(得分:1)

在这两个示例中,您应该使用有效的css选择器,对于类,您应该使用'。'在课堂前。 提供的输入元素的一些有效的css选择器是:

input.form-control
input.existing-user
input.form-control.existing-user

因此有效的用途是:

$field = $this->getPage()->findAll('css', '.existing-user')->getValue();

另外请注意,如果找不到该元素,findAll方法不会抛出异常,而是返回null并且对null使用get值将导致php致命错误。 实现异常处理并在需要时使用/实现waitForElement方法。