在代码接收中,我想检查页面中是否存在某个元素,并再次测试第一个元素是否存在。我可以简单地做到这一点:
// $I is a AcceptanceTester Object and extends \Codeception\Actor class
try{
$I->see('.firstElement');
}catch(ElementNotFound $e){
// do some actions
}
// do some anothers actions
Run Code Online (Sandbox Code Playgroud)
但是,如果这样做,我可以在报告文件中看到该行"I see '.firstElement'"。我不想在此报告中看到此测试。
我的问题:如何安静地调用\ Codeception \ Actor方法?我只想做一个简单的DOM元素html检查,而不是将此操作打印到生成的报告中
您可以创建一个简单的辅助模块来检查元素是否存在。它可以使用WebDriver模块或PhpBrowser模块来查找元素。例如:
class ElementChecker extends \Codeception\Module
{
public function checkExistence($locator)
{
$elements = $this->getModule('WebDriver')->_findElements($locator);
return !empty($elements);
}
},
Run Code Online (Sandbox Code Playgroud)
之后,您应该将此助手添加到您的代码接收配置中。例如:
actor: SomeTester
modules:
enabled:
# some modules
- ElementChecker
Run Code Online (Sandbox Code Playgroud)
新方法将包含在测试器类中。您可以使用它们:
if ($I->checkExistence('.firstElement')) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
另外,您可以在官方文档中阅读有关帮助程序的更多信息