即使try-catch,Codeception测试也会失败

时间:2016-02-04 16:19:39

标签: php selenium codeception

我是PHP和Codeception的新手,我一直在尝试使用页面对象编写一些基本的测试。

这是我的页面类中的一个函数示例。理想情况下,它应该单击一个按钮,如果没有按钮,只需记录注释。

try {
    $I->click(self::$buttonAddNewAddress);
} catch (Expection $e) {
    $I->comment('This address will be the first one');
}

我得到«失败链接或按钮或CSS或XPath元素,找不到'// div [@ class =“buttons-set”] / button'。»每次我尝试运行此代码。

在AcceptanceTester.php中,我有一个与我类似的方法:

try {
    $I->click('//a[contains(.,"No Thanks")]');
} catch (Exception $e) {
    $I->comment('No email capture visible');
}

如果链接不可见,它可以正常工作。除了第一个代码是在页面类中,第二个代码在AcceptanceTester.php中,我没有看到任何区别。

请帮助我,或者给我一个如何重写这部分代码的建议。

1 个答案:

答案 0 :(得分:6)

如果您在命名空间中进行了测试(并且应该),则代码将尝试从该命名空间中捕获异常。 即。

namespace MyTest;

try {
    $I->click(self::$buttonAddNewAddress);
} catch (Exception $e) {
    $I->comment('This address will be the first one');
}

这只会抓住\MyTest\Exception

您需要在代码中添加\

namespace MyTest;

try {
    $I->click(self::$buttonAddNewAddress);
} catch (\Exception $e) {
    $I->comment('This address will be the first one');
}