PHPUnit 的 PHAR 包中已經包含了PHPUnit_Selenium組件包php
phpunit官網:https://phpunit.de/,下載地址:https://phar.phpunit.de/phpunit.pharhtml
Windows下安裝java
總體上說,在 Windows 下安裝 PHAR 和手工在 Windows 下安裝 Composer 是同樣的過程:git
爲 PHP 的二進制可執行文件創建一個目錄,例如 C:\bingithub
將 ;C:\bin 附加到 PATH 環境變量中(相關幫助)web
下載 https://phar.phpunit.de/phpunit.phar 並將文件保存到 C:\bin\phpunit.pharchrome
打開命令行(例如,按 Windows+R » 輸入 cmd » ENTER)編程
創建外包覆批處理腳本(最後獲得 C:\bin\phpunit.cmd):瀏覽器
C:\Users\username> cd C:\bin服務器
C:\bin> echo @php "%~dp0phpunit.phar" %* > phpunit.cmd
C:\bin> exit
新開一個命令行窗口,確認一下能夠在任意路徑下執行 PHPUnit:
C:\Users\username> phpunit --version
PHPUnit x.y.z by Sebastian Bergmann and contributors.
(注意:若是執行失敗,請把C:\bin路徑添加到系統環境變量PATH中,以下圖)
以上安裝方法來自phpunit官網,其它平臺安裝方法請參考官方文檔https://phpunit.de/manual/current/zh_cn/installation.html
Selenium Server是一個測試工具,它容許用任意主流瀏覽器爲任意 HTTP 網站上的用任意編程語言開發的 web 應用程序編寫自動用戶界面測試。
下載 Selenium Server 的jar包。
而後將selenium-server-standalone-2.45.0.jar(注意版本後綴) 複製到合適的位置,好比說 C:\bin
運行C:\bin> java -jar java -jar selenium-server-standalone-2.45.0.jar 來啓動 Selenium Server 服務器端。
能夠用 Selenium Server 的客戶端/服務器端協議來向它發送命令了。
PHPUnit_Extensions_Selenium2TestCase 測試用例可以使用 WebDriver API(部分實現),開發前,請先下載對應瀏覽器的WebDriver組件,並放進C:\bin
https://sites.google.com/a/chromium.org/chromedriver/downloads chrome瀏覽器
https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver IE瀏覽器
osc登陸和發博文測試用例
<?php class OscTest extends PHPUnit_Extensions_Selenium2TestCase { private $username; private $psw; protected function setUp() { $this->username = 'xxxxx'; // osc賬號 $this->psw = 'xxxxx'; // osc密碼 // 設置測試的瀏覽器 // $this->setDesiredCapabilities(array( // "firefox_binary" => "D:\\Program Files\\Mozilla Firefox\\firefox.exe" // )); // $this->setBrowser('firefox'); $this->setDesiredCapabilities(array( "webdriver.chrome.driver" => "C:\\bin\\chromedriver.exe" )); $this->setBrowser('chrome'); // $this->setSeleniumServerRequestsTimeout(180000); //IE運行會比較慢,須要設置時間 // $this->setDesiredCapabilities(array( // "webdriver.ie.driver" => "C:\\bin\\IEDriverServer.exe" // )); // $this->setBrowser('IE'); // 默認頁面 $this->setBrowserUrl('https://www.oschina.net/home/login'); } public function testLogin() { // 設置測試頁面 $this->url('https://www.oschina.net/home/login'); // 輸入osc賬號 $this->byId('f_email')->value($this->username); // 輸入osc密碼 $this->byId('f_pwd')->value($this->psw); // 截圖 $screenshot = $this->currentScreenshot(); file_put_contents("F:\\screenshot1.png", $screenshot); // 登陸提交 $this->byId('form_user')->submit(); $screenshot = $this->currentScreenshot(); file_put_contents("F:\\screenshot2.png", $screenshot); // 判斷 $this->assertNotEmpty($this->title()); // 點擊發表博文 $a1 = $this->byClassName('a1'); $this->assertNotEmpty($a1); $a1->click(); $this->waitUntil(function ($testCase) { $url = $testCase->url(); if (strpos($url, 'new-blog') !== false) { return TRUE; } }, 10000); // 設置博客標題 $this->byName('title')->value('phpunit-selenium自動化測試'); // 設置博客正文 $script = "var ueditor = UE.getEditor('wmd-input');ueditor.setContent('phpunit-selenium自動化測試http://my.oschina.net/penngo');return true;"; $result = $this->execute(array( 'script' => $script, 'args' => array() )); // 設置博客分類 $this->select($this->byId('blogcatalogselect')) ->selectOptionByLabel("軟件工程"); $screenshot = $this->currentScreenshot(); file_put_contents("F:\\screenshot4.png", $screenshot); // 發表博客 $this->byId('save-bt')->click(); $screenshot = $this->currentScreenshot(); file_put_contents("F:\\screenshot5.png", $screenshot); // $this->assertNotEquals($new_blog, $this->url()); } } ?>
運行
運行中的截圖
screenshot1.png
screenshot2.png
screenshot4.png
screenshot5.png
爲方便你們學習研究,提供附件:php_selenium.rar(包含phpunit.phar,selenium-server-standalone-2.45.0.jar,chromedriver,IEDriverServer)
最後補充一句:若是有人使用些方法來OSC發廣告,請@紅薯自行解決。