Codeception,请勿打印要报告的特定操作

use*_*454 5 php codeception

在代码接收中,我想检查页面中是否存在某个元素,并再次测试第一个元素是否存在。我可以简单地做到这一点:

// $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检查,而不是将此操作打印到生成的报告中

Max*_*rov 1

您可以创建一个简单的辅助模块来检查元素是否存在。它可以使用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)

另外,您可以在官方文档中阅读有关帮助程序的更多信息