selenium 需要先curl扩展,所有安装/PHPUnit_Selenium 时往往提示错误
phpunit/PHPUnit_Selenium requires PHP extension "curl"
执行以下命令先安装curl,然后重启apache
//安装curl
sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart
//安装PHPUnit_Selenium
sudo pear install phpunit/PHPUnit_Selenium
安装完后Extension目录如下
测试用例
<?php
//文件名:MySeleniumTestCase.php
//PHPUnit_Extensions_SeleniumTestCase
class MySeleniumTestCase extends PHPUnit_Extensions_SeleniumTestCase
{
protected function setUp()
{
//设置浏览器
$this->setBrowser('*firefox');
//设置用于测试的基址URL(http://localhost/test/)
$this->setBrowserUrl('http://www.example.com/');
}
public function testTitle()
{
$this->open('http://fcwr.jstv.com/');
$this->assertTitle('非诚勿扰官方网站 江苏卫视新派交友电视节目 fcwr.jstv.com | 江苏网络电视台');
}
}
?>
或
<?php
//文件名:MySeleniumTestCase.php
//PHPUnit_Extensions_Selenium2TestCase
class MySeleniumTestCase extends PHPUnit_Extensions_Selenium2TestCase
{
protected function setUp()
{
//设置浏览器
$this->setBrowser('firefox');
//设置用于测试的基址URL(http://localhost/test/)
$this->setBrowserUrl('http://www.example.com/');
}
public function testTitle()
{
$this->open('http://fcwr.jstv.com/');
$this->assertTitle('非诚勿扰官方网站 江苏卫视新派交友电视节目 fcwr.jstv.com | 江苏网络电视台');
}
}
?>
<?php
// 测试套件TestSuite.php
require_once 'PHPUnit/Autoload.php';
class MyTestSuite extends PHPUnit_Framework_TestSuite {
// SetUp方法是在每个测试用例运行前进行一些初始化的工作,比如创建业务对象,让其他测试方法也可以使用业务对象,或数据库连接对象
protected function setUp(){
$this->data= "somesthing";
}
//tearDown则在每个测试用例运行后进行一些比如资源的释放等工作的工作
protected function tearDown(){
//$this->sharedFixture= null;
}
//注意此处设置为static
public static function suite() {
$suite = new self();
$suite->addTestFile("MySeleniumTestCase.php");
return $suite;
}
}
?>
执行phpunit TestSuite.php,
phpunit 自动在服务端打开浏览器,并请求 http://fcwr.jstv.com/,并验证title
Selenium Server API: Setup
Method | Meaning |
---|---|
void setBrowser(string $browser) | Selenium RC服务器使用的浏览器。 |
void setBrowserUrl(string $browserUrl) | 设置用于测试的基址URL,比如http://localhost |
void setHost(string $host) | 设置连接到Selenium RC服务器的主机名。IP(192.168.8.24) 或主机名 |
void setPort(int $port) | 设置连接到Selenium RC服务器的端口号。默认4444 |
void setTimeout(int $timeout) | 设置连接到Selenium RC服务器的超时时间。 |
void setSleep(int $seconds) | 设置Selenium RC客户端向Selenium RC服务器发送动作指令之间睡眠的秒数。 |
Selenium Server 支持的浏览器
Supported browsers include:
*firefox
*mock
*firefoxproxy
*pifirefox
*chrome
*iexploreproxy
*iexplore
*firefox3
*safariproxy
*googlechrome
*konqueror
*firefox2
*safari
*piiexplore
*firefoxchrome
*opera
*webdriver
*iehta
*custom
配置多浏览器
<?php
//文件名:MySeleniumTestCase.php
class MySeleniumTestCase extends PHPUnit_Extensions_SeleniumTestCase
{
public static $browsers = array(
array(
'name' => 'Firefox on Linux',
'browser' => '*firefox',
'host' => 'localhost',
'port' => 4444,
'timeout' => 30000,
),
array(
'name' => 'googlechrome',
'browser' => '*googlechrome',
'host' => 'localhost',
'port' => 4444,
'timeout' => 30000,
),
);
protected function setUp()
{
//$this->setBrowser('*googlechrome');
$this->setBrowserUrl('http://www.google.com/');
}
public function testTitle()
{
$this->open('http://www.baidu.com/');
$this->assertTitle('百度一下,你就知道');
}
}
?>
PHPUnit_Extensions_SeleniumTestCase 断言
| |
void assertAlertPresent() | 如果不存在警告(对话框)则报错。 |
void assertNoAlertPresent() | 如果存在警告(对话框)则报错。 |
void assertChecked(string $locator) | 如果$locator标识的元素未选中则报错。 |
void assertNotChecked(string $locator) | 如果$locator标识的元素被选中则报错。 |
void assertConfirmationPresent() | 如果不存在确认(对话框)则报错。 |
void assertNoConfirmationPresent() | 如果存在确认(对话框)则报错。 |
void assertEditable(string $locator) | 如果$locator标识的元素不可编辑则报错。 |
void assertNotEditable(string $locator) | 如果$locator标识的元素可编辑则报错。 |
void assertElementValueEquals(string $locator, string $text) | 如果$locator标识的元素的值不等于给定的$text则报错。 |
void assertElementValueNotEquals(string $locator, string $text) | 如果$locator标识的元素的值等于给定的$text则报错。 |
void assertElementContainsText(string $locator, string $text) | 如果$locator标识的元素不含给定的$text则报错。 |
void assertElementNotContainsText(string $locator, string $text) | 如果$locator标识的元素包含给定的$text则报错。 |
void assertElementPresent(string $locator) | 如果$locator标识的元素不存在则报错。 |
void assertElementNotPresent(string $locator) | 如果$locator标识的元素存在则报错。 |
void assertLocationEquals(string $location) | 如果当前位置(location)不等于给定的$location则报错。 |
void assertLocationNotEquals(string $location) | 如果当前位置(location)等于给定的$location则报错。 |
void assertPromptPresent() | 如果不存在提示(对话框)则报错。 |
void assertNoPromptPresent() | 如果存在提示(对话框)则报错。 |
void assertSelectHasOption(string $selectLocator, string $option) | 如果给定的选项不可用则报错。 |
void assertSelectNotHasOption(string $selectLocator, string $option) | 如果给定的选项可用则报错。 |
void assertSelected($selectLocator, $option) | 如果给定的标签未选中则报错。 |
void assertNotSelected($selectLocator, $option) | 如果给定的标签被选中则报错。 |
void assertIsSelected(string $selectLocator, string $value) | 如果给定的值未选中则报错。 |
void assertIsNotSelected(string $selectLocator, string $value) | 如果给定的值被选中则报错。 |
void assertSomethingSelected(string $selectLocator) | 如果$selectLocator标识的选项未选中则报错。 |
void assertNothingSelected(string $selectLocator) | 如果$selectLocator标识的选项被选中则报错。 |
void assertTextPresent(string $pattern) | 如果给定的$pattern不存在则报错。 |
void assertTextNotPresent(string $pattern) | 如果给定的$pattern存在则报错。 |
void assertTitleEquals(string $title) | 如果当前标题不等于给定的$title则报错。 |
void assertTitleNotEquals(string $title) | 如果当前标题等于给定的$title则报错。 |
void assertVisible(string $locator) | 如果$locator标识的元素不可见则报错。 |
void assertNotVisible(string $locator) | 如果$locator标识的元素可见则报错。 |