如何使用 behat mink 扩展检查禁用属性?
How to check for disabled attribute using behat mink extention?
我的功能中有一个场景,如果复选框已禁用,我想编写脚本 属性 然后 return true。
<input type="checkbox" class="checkbox-click" id="#checkbox-2" name="testcheck" value="where to go" disabled="disabled">
以下是我尝试但未成功的自定义:
/**
* check for is disabled or not
*
* @Then /^I check for is disabled "([^"]*)"$/
*/
public function isDisabled($selector)
{
$session = $this->getSession();
$element = $session->getPage()->find(
'xpath',
$session->getSelectorsHandler()->selectorToXpath('css', $selector) // just changed xpath to css
);
$return = $element->getAttribute('disabled');
}
我收到致命错误:getAttribute 调用非对象。这不是完美的代码,但我只是在这里提供参考。
发生这种情况是因为您没有处理错误。如果找到元素,则查找方法 returns 对象,否则它将 return null 并且在 null 上使用 getAttribute 会导致致命异常,因为它不是对象。
您应该检查是否为 null,如果是则抛出异常。
您不需要对 xpath 使用选择器。
如果找不到该属性,您也不会抛出任何错误。
作为验证,您可以在元素上使用方法 hasAttribute() 并逐个抛出异常。
你不可以做的另一件事是使用有条件的等待。
我的功能中有一个场景,如果复选框已禁用,我想编写脚本 属性 然后 return true。
<input type="checkbox" class="checkbox-click" id="#checkbox-2" name="testcheck" value="where to go" disabled="disabled">
以下是我尝试但未成功的自定义:
/**
* check for is disabled or not
*
* @Then /^I check for is disabled "([^"]*)"$/
*/
public function isDisabled($selector)
{
$session = $this->getSession();
$element = $session->getPage()->find(
'xpath',
$session->getSelectorsHandler()->selectorToXpath('css', $selector) // just changed xpath to css
);
$return = $element->getAttribute('disabled');
}
我收到致命错误:getAttribute 调用非对象。这不是完美的代码,但我只是在这里提供参考。
发生这种情况是因为您没有处理错误。如果找到元素,则查找方法 returns 对象,否则它将 return null 并且在 null 上使用 getAttribute 会导致致命异常,因为它不是对象。
您应该检查是否为 null,如果是则抛出异常。
您不需要对 xpath 使用选择器。 如果找不到该属性,您也不会抛出任何错误。
作为验证,您可以在元素上使用方法 hasAttribute() 并逐个抛出异常。 你不可以做的另一件事是使用有条件的等待。