phpunit-selenium自動化測試開源中國賬號登陸和發博文

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發廣告,請@紅薯自行解決。

相關文章
相關標籤/搜索