2009-11-04 60 views
1

我已經在Firefox上安裝Selenium IDE,並設法記錄和播放各種網頁導航序列。我需要的是通過PHP自動執行所有操作,即運行一個獲取最終頁面的HTML源代碼的PHP腳本(即在導航序列結束時)。 在硒有以出口到PHP的選項,所以我得到這樣的:使用Selenium代碼下載網頁

class Example extends PHPUnit_Extensions_SeleniumTestCase 
{ 
    function setUp() 
    { 
    $this->setBrowser("*chrome"); 
    $this->setBrowserUrl("http://www.example.com/"); 
    } 

    function testMyTestCase() 
    { 
    $this->open("/"); 
    $this->click("link=24"); 
    $this->waitForPageToLoad("30000"); 
    $this->click("link=Test2"); 
    $this->waitForPageToLoad("30000"); 
    $this->click("//td[4]/a/img"); 
    $this->waitForPageToLoad("30000"); 
    $this->type("username", "user"); 
    $this->type("password", "pass"); 
    $this->click("//input[@name='login']"); 
    $this->waitForPageToLoad("30000"); 
    } 
} 

雖然我可以在我的PHP代碼中使用此,它似乎並沒有做任何事情(因爲它只是一個類定義我猜)。我如何獲取最後一個源頁面?請注意,我不希望我的PHP代碼在屏幕上進行導航,而是希望在PHP中進一步處理最終的源代碼。

回答

0

導出到PHP選項將導出您的測試的形式,將(使用一些額外的工作)使用Selenium RC PHP驅動程序運行。它不會導出您正在查看的頁面。

開箱即用的Selenium IDE不會讓您獲取頁面的最終源代碼並對其執行任何操作。如果讓我來完成這樣的事情我倒是

  1. 重新考慮我的做法

  2. 如果我決定要與硒IDE做到這一點,我會考慮使用用戶extension.js機制來編寫一個新的Selenium動作,該動作將使用Javascript獲取頁面源,然後將其張貼到我選擇的URL

  3. 使URL位於執行剩餘處理的PHP頁面上方。

這是一種哈克,將需要一些研究,用戶extension.js(不是每個人),並且是必然是脆弱的額外的定製工作。 (見選項#1)

+0

你能詳細說明選項#1嗎?不需要通過硒。在我瀏覽一個網站(主要是.aspx)之後,我進入了我想要的頁面,並可以通過瀏覽器「查看源代碼」。這是我想要「自動」得到的,例如通過PHP代碼。 – Rob 2009-11-05 07:30:42

0

一些使這更容易的事情。

1)當需要通過php來完成時,它需要連接到服務器。

2)所以去下載服務器(硒-rc)。通過以下方式運行它:java -jar selenium-server.jar通過java -jar selenium-server.jar檢查參數 - ? (我認爲!)。此時重要的將是日誌文件位置。

3)服務器將在本地主機和端口4444(以上生成的代碼預設的默認值)上啓動。

4)嘗試連接上面的php代碼。檢查你的硒服務器日誌。它應該有嘗試連接的細節。

+0

更多的信息在這裏:http://www.phpunit.de/manual/3.1/en/selenium.html。我不確定是否可以動態地轉儲html(我猜你想看看javascript修改後的標記是什麼樣的)。真的,我主要使用assert *和截圖來了解測試如何進行。 – Koobz 2009-11-05 08:12:37

+0

謝謝。已經安裝硒服務器,並設法在cmd窗口中啓動它。被「嘗試與上面的php代碼連接」混淆,即如何提交? – Rob 2009-11-05 08:32:05

+0

使用phpunit。如果你已經在unix系統上安裝了pear,你應該在你的路徑中使用phpunit命令。 導航到您的測試目錄並輸入: phpunit TestName.php – Koobz 2009-11-05 20:39:41