[英]How can I access an actor (e.g. AcceptanceTester) in a Codeception helper
when I use the AcceptanceHelper generated by codeception (_support/AcceptanceHelper.php), how can I access the Actor / AcceptanceTester ($I). 当我使用由代码接收(_support / AcceptanceHelper.php)生成的AcceptanceHelper时,如何访问Actor / AcceptanceTester($ I)。 And how can I access my functions from StepObjects? 以及如何从StepObjects访问我的函数?
I have: 我有:
acceptance/_steps/MyStepObject.php 接受/_steps/MyStepObject.php
namespace AcceptanceTester;
class MyStepObject extends \AcceptanceTester
{
public function deleteCookies(){
$I = $this;
$I->amGoingTo("delete all cookies...");
$I->executeInSelenium(function(\WebDriver $webdriver) {$webdriver->manage()->deleteAllCookies(); });
$I->reloadPage();
}
public function loginUser($user,$password,$language = 'Untranslated')
{
$I = $this;
$I->amOnPage(\LoginPage::$URL);
$I->deleteCookies();
$I->amGoingTo('fill the fields...');
$I->fillField(\LoginPage::$usernameField, $user);
$I->fillField(\LoginPage::$passwordField, $password);
$I->click(\LoginPage::$loginButton);
}
}
In the class _support/AcceptanceHelper.php
I want to call methods from the AcceptanceTester like $I->canSee('something')
and I want to call my own methods (like 'login'
) from my StepObject. 在类_support/AcceptanceHelper.php
我想从AcceptanceTester调用方法,例如$I->canSee('something')
,我想从我的StepObject调用我自己的方法(例如'login'
)。
I know I can get a specific module (eg the WebDriver) with $this->getModule('WebDriver')
. 我知道我可以使用$this->getModule('WebDriver')
获得特定的模块(例如$this->getModule('WebDriver')
。 But how can I get the AcceptanceTester / my StepObject? 但是,如何获得AcceptanceTester / StepObject?
Passing in the $I variable from the test. 从测试中传递$ I变量。 It's a bit verbose but works fine. 它有点冗长,但效果很好。
public function deleteCookies($I){...}
and then in tests write: 然后在测试中写道:
$I->deleteCookies($I);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.