安装成功Codeception之后, 有以下命令进行操作
Available commands:
build Generates base classes for all suites
clean Cleans or creates _log directory
console Launches interactive test console
help Displays help for a command
list Lists commands
run Runs the test suites
generate
generate:cept Generates empty Cept file in suite
generate:cest Generates empty Cest file in suite
generate:group
generate:helper Generates new helper
generate:pageobject Generates empty PageObject class
generate:phpunit Generates empty PHPUnit test without Codeception additions
generate:scenarios Generates text representation for all scenarios
generate:stepobject Generates empty StepObject class
generate:suite Generates new test suite
generate:test Generates empty unit test file in suite
其中,可以使用generate:cest来创建一个测试类
<span style="font-size:14px;">php codecept generate:cest acceptance BasicTest</span>
这将在tests/acceptance下面创建一个名为BasicTestCest.php的文件。
我们可以再里面写入
<span style="font-size:14px;"> // tests
public function tryToTest(AcceptanceTester $I)
{
$I->amOnPage('/');
$I->see('首页');
}</span>
如果我们的配置正确,并且我们的首页确实有'首页两个字的话',当我们运行这个测试,就可以PASSED!
配置文件时在acceptance.suite.yml里面进行配置
class_name: AcceptanceTester
modules:
enabled:
- PhpBrowser
- AcceptanceHelper
config:
PhpBrowser:
url: 'http://www.shouye.com' //我们自己的url
第一行为测试父类的名称
加载的模块和类
所请求的地址
然后,运行的命令为run 后面可以接-d 调试; --steps一步一步显示操作; --html='outPut.html' html输出
php codecept run --steps -d acceptance BasicTestCest.php:tryToTest
就可以成功运行了!
二、测试代码编写
具体的代码编写也很简单而且人性化
比如写个登陆的测试
public function login(WebGuy $I)
{
$I->amOnPage('/login');
$I->see('登录');
$I->fillField("#loginUserName", "user");
$I->fillField("#loginUserPwd", "password");
$I->click('#login_btn');
}
amOnPage函数表示到达这个页面
see表示能看到里面的字符。这里表示登陆
fillField表示在什么地方填写什么东西
click表示一个点击
文档中均有接口的说明,可以参考接口说明和Webdriver这个源码进行操作
如果要进行稍微复杂一点的js操作,可以直接进行执行
executeJS(js),如果要直接编写webdriver代码可以执行下面这个函数
/**
* Low-level API method.
* If Codeception commands are not enough, use Selenium WebDriver methods directly
*
* ``` php
* $I->executeInSelenium(function(\WebDriver $webdriver) {
* $webdriver->get('http://google.com');
* });
* ```
*
* Use [WebDriver Session API](https://github.com/facebook/php-webdriver)
* Not recommended this command too be used on regular basis.
* If Codeception lacks important Selenium methods implement then and submit patches.
*
* @param callable $function
*/
public function executeInSelenium(\Closure $function)
{
return $function($this->webDriver);
}
总之,我们的代码,调用了webdriver,webdriver调用了浏览器,执行操作。
PS:webdriver是无法获取iframe里面的数据