>測試是一個非常廣泛的主題,無論是單位測試,功能測試,接受測試等。在本文中,我們將了解如何使用硒進行接受測試。我將使用一個實用的示例來說明真實用例。我將假設您已經知道如何使用Phpunit進行單元測試,或者至少可以掌握一切。讓我們開始。
進行正式測試,以確定係統是否滿足其接受標準,並使客戶能夠確定是否接受該系統。
硒是自動化用戶界面測試的工具。它有助於對瀏覽器測試應用程序。該過程可以像這樣描述:什麼是硒?
訪問頁面http://myapp.dev/videos。
斷言該頁麵包含20個視頻的列表。使用Selenium Webdriver(Selenium 2)時,測試將轉換為命令並傳遞到Selenium Server(詳細介紹此信息),然後使用Web瀏覽器本機API傳遞到瀏覽器。
>應用程序設置>
>
<span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
> phpunit和硒
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
完成測試時調用拆卸方法,用於清除階段。我們使用它來關閉瀏覽器並終止當前會話。
><span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
數據提供商
Phpunit數據提供商> PHPUNIT數據提供商允許我們使用特定數據提供測試,而無需迭代其測試。您可以在文檔中閱讀更多內容。
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
>使用網頁時的一個常見任務是元素選擇。 Phpunit的硒擴展為此提供了非常不錯的API。您可以按類名稱,標籤,名稱,ID,CSS選擇器,XPath等選擇元素。該方法將返回phpunit_extensions_selenium2testcase_element實例,您可以使用該實例來選擇其他子元素,屬性等。您還可以設置或獲得元素值,更新元素CSS和許多其他常見任務。對於我們的頁面,我們可能會執行以下操作。
><span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
>此測試將選擇用戶名輸入並設置一個值,然後提交訂閱表格。在此之後,我們可以添加一個斷言,以查看響應是否如預期。頁面將包含一切都很好!如果通過了驗證。
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
我們的數據提供商包含輸入名稱和相應的值。我們將創建一個單獨的方法來處理填充表單輸入並提交。
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
>
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function validInputsProvider() </span> <span>{ </span> <span>$inputs[] = [ </span> <span>[ </span> <span>'username' => 'younesrafie', </span> <span>'password' => 'mypassword', </span> <span>'password_confirmation' => 'mypassword', </span> <span>'email' => 'mymail@gmail.com', </span> <span>'cardHolderName' => 'RAFIE Younes', </span> <span>'cardNumber' => '378282246310005', </span> <span>'billingAddress' => 'Narjiss B Fez Morocco', </span> <span>'cvc' => '850', </span> <span>'expirationMonth' => '01', </span> <span>'expirationYear' => '2016', </span> <span>] </span> <span>]; </span> <span>return $inputs; </span> <span>} </span> <span>public static function invalidInputsProvider() </span> <span>{ </span> <span>$inputs[] = [ </span> <span>[ </span> <span>'username' => '@younesrafie', </span> <span>'password' => 'mypassword', </span> <span>'password_confirmation' => 'mypassword', </span> <span>'email' => 'mymail@gmail.com', </span> <span>'cardHolderName' => 'RAFIE Younes', </span> <span>'cardNumber' => '378282246310005', </span> <span>'billingAddress' => 'Narjiss B Fez Morocco', </span> <span>'cvc' => '850', </span> <span>'expirationMonth' => '01', </span> <span>'expirationYear' => '2016', </span> <span>], </span> <span>"Username must only contain alpha numeric characters and dashes." </span> <span>]; </span> <span>// ... </span> <span>return $inputs; </span> <span>} </span><span>}</span>
>
<span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function testFormSubmissionWithUsername() </span> <span>{ </span> <span>$this->byName('username')->value('younesrafie'); </span> <span>$this->byId('subscriptionForm')->submit(); </span> <span>} </span><span>}</span>
我們的表單僅包含基本交互,例如選擇元素,設置值,提交表單等。但是,我們還可以在按鈕或鏈接元素上使用單擊方法來驗證目標頁面是否按預期工作。 >
>我們使用Firefox瀏覽器進行測試。但是,我們也可以使用任何其他瀏覽器。硒使用驅動程序方法,每個瀏覽器供應商都在提供自己的驅動程序。您可以檢查文檔中受支持的驅動程序的列表。
>>要啟用Chrome瀏覽器,您需要下載Chromedriver並在啟動Selenium Server時將路徑指定為選項。
<span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
>如果您的頁面內容是通過AJAX加載的,並且您不想直接觸發頁面加載的測試,則需要等到頁面加載並存在元素。
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
結論
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
>如何在php?
>我如何使用selenium phpunit中的瀏覽器會話?使用WebDriver的會話方法完成了使用Selenium的Phpunit。當您創建WebDriver的新實例時,將啟動一個新的瀏覽器會話。您可以使用各種方法(例如navigate(),refresh()或close()與此會話進行交互。要結束會話,您可以使用Quit()方法,該方法將關閉所有窗口並結束會話。
>如何在不同瀏覽器上使用Selenium運行phpunit測試?
selenium web Driver支持多個瀏覽器,包括Chrome,Firefox,Firefox,Firefox,Firefox,Firefox, Safari和Internet Explorer。要在其他瀏覽器上運行Phpunit測試,您需要為該瀏覽器創建一個新的WebDriver實例。例如,要使用Firefox,您將創建一個新的FirefoxDriver實例。然後,您可以使用此驅動程序來運行測試。
以上是將硒與phpunit一起使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!