目錄
鑰匙要點
與DOM Elements合作
使用另一個瀏覽器
文檔準備就緒嗎?
中安裝phpunit和selenium webdriver,以在PHP中安裝PHPUNIT和Selenium Webdriver,您需要使用Composer,Composer是PHP的依賴關係管理工具。首先,如果還沒有安裝作曲家。然後,在您的終端中運行以下命令以安裝phpunit:Composer需要-DEV phpunit/phpunit ^9。對於Selenium WebDriver,請使用命令:Composer需要-DEV php-webdriver/webdriver。這將在您的php項目中同時安裝Phpunit和Selenium Webdriver。
>如何使用Selenium運行PHPUNIT測試?
使用Selenium進行Phpunit測試,您需要編寫測試案例它使用硒驅動器。在測試案例中,您可以使用WebDriver命令與瀏覽器進行交互。準備好測試用例後,您可以使用Phpunit命令行工具運行它。只需在終端中導航到您的項目目錄並運行命令:phpunit mytest.php,其中“ mytest.php”是您的測試文件的名稱。
>如何將phpunit中的斷言與硒中使用?它們對於確定測試是否通過還是失敗至關重要。在使用Selenium的Phpunit測試中,您可以使用斷言檢查Web元素的狀態。例如,您可以斷言存在某個元素,可見或包含特定文本。為此,您可以使用phpunit提供的斷言方法,例如assertequals,asserttrue或AspertContains。
如何使用selenium中的phpunit中的ajax請求?在使用硒的phpunit中,可能會很棘手,因為您需要等待ajax調用才能完成,然後才能與更新的元素進行交互。 Selenium WebDriver為此目的提供WebDriverWait類。您可以使用它等待某個條件在繼續之前。例如,您可以等待可見或可單擊的元素。
我如何使用Manage() - > getCookies() - > getCookies()方法在phpunit中處理Phpunit中的cookie?此方法將所有cookie作為數組返回。您還可以使用Manage() - > AddCookie(),Manage() - > deletecookie()和Manage() - > deleteallcookies()方法來操縱cookie。並行的硒
首頁 後端開發 php教程 將硒與phpunit一起使用

將硒與phpunit一起使用

Feb 17, 2025 am 08:31 AM

將硒與phpunit一起使用

>測試是一個非常廣泛的主題,無論是單位測試,功能測試,接受測試等。在本文中,我們將了解如何使用硒進行接受測試。我將使用一個實用的示例來說明真實用例。我將假設您已經知道如何使用Phpunit進行單元測試,或者至少可以掌握一切。讓我們開始。

將硒與phpunit一起使用

鑰匙要點

  • > Selenium是自動化用戶界面測試的工具,使您可以設置與用戶一樣與Web應用程序進行交互的測試。它通過將測試轉換為命令並將其傳遞到Selenium Server來起作用,然後使用其本機API與Web瀏覽器進行交互。 PHPunit是PHP的單元測試框架,可以與硒一起用於接受測試。它為此目的提供了兩個類:phpunit_extensions_seleniumtestcase for selenium rc(現已刪除)和phpunit_extensions_selenium2testcase for selenium webdriver。 PHPUNIT中的數據提供商
  • 允許將特定數據饋入未經迭代的測試中。這可以與Selenium結合使用,以測試您的Web應用程序如何響應不同的輸入。
  • >
  • 硒測試可以在不同的瀏覽器上進行,因為硒使用了每個瀏覽器供應商提供自己的驅動程序的驅動程序方法。這允許您的Web應用程序進行全面的跨瀏覽器測試。
  • >
  • 什麼是接受測試?
  • >
接受測試是通過測試講述用戶故事的過程,我喜歡這句話來描述它:

進行正式測試,以確定係統是否滿足其接受標準,並使客戶能夠確定是否接受該系統。

什麼是硒?

硒是自動化用戶界面測試的工具。它有助於對瀏覽器測試應用程序。該過程可以像這樣描述:

訪問頁面http://myapp.dev/videos。

斷言該頁麵包含20個視頻的列表。
    >
  • 單擊分頁上的第二個。
  • 斷言該頁麵包含20個視頻的列表。
  • >
  • 退出瀏覽器。
  • >您可能想知道:“它如何使用所描述的測試來操縱網頁?”
  • 答案是“取決於”。如果您使用的是Selenium RC(先前命名為Selenium 1),則將自動生成的JavaScript代碼注入頁面以執行所需的操作。硒RC被棄用,僅在維護模式下得到支持;您應該使用Selenium webdriver。

使用Selenium Webdriver(Selenium 2)時,測試將轉換為命令並傳遞到Selenium Server(詳細介紹此信息),然後使用Web瀏覽器本機API傳遞到瀏覽器。

>應用程序設置

因為我們實際上沒有測試應用程序,所以我將使用用戶註冊頁面。用戶將輸入他的個人信息和一些計費信息。如果一切都很好,則頁面應該輸出所有內容都很好!否則,該頁面將顯示帶有驗證錯誤消息列表的訂閱表格。

>

將硒與phpunit一起使用

>我們將開始使用與硒擴展的Phpunit一起測試我們的應用程序。在開始之前,請確保使用作曲家安裝它們。

>

<span>composer require --dev phpunit/phpunit
</span><span>composer require --dev phpunit/phpunit-selenium</span>
登入後複製
登入後複製
登入後複製
>我們在將命令傳遞給硒服務器之前說,然後將它們轉發到瀏覽器。我們需要下載Selenium Server,這只是Java存檔可執行文件。可以使用Java -jar selenium-server-standalOne- .jar運行服務器。由於我們會經常使用它,因此最好將其移至bin目錄並為我們的.bashrc或.zshrc中的該目錄做一個別名。

> phpunit和硒
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
登入後複製
登入後複製
登入後複製
Phpunit支持Selenium RC和WebDriver,並為此提供兩個類。 phpunit_extensions_seleniumtestcase用於RC版本,phpunit_extensions_selenium2testcase用於WebDriver版本。因此,您的測試必須擴展其中一個才能開始。請記住,RC版本正在棄用,因此我們將在下面的示例中使用WebDriver。

設置方法用於準備測試環境。在這種情況下,我們使用它來告訴phpunit我們的硒服務器在哪裡運行,我們將使用什麼瀏覽器以及應用程序的URL。 Sethost方法默認為LocalHost,SetPort方法默認為4444,因此可以在此處省略它們。但是,如果您的測試服務器在Windows機器內部,該機器在您從另一台不同的計算機運行測試時都支持Internet Explorer等。

完成測試時調用拆卸方法,用於清除階段。我們使用它來關閉瀏覽器並終止當前會話。

>
<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>
登入後複製
登入後複製
登入後複製

> InvalidInputSprovider返回有效輸入的列表,除一個字段外,我們在驗證失敗後傳遞了預期的錯誤消息。

與DOM Elements合作

>使用網頁時的一個常見任務是元素選擇。 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>
登入後複製
登入後複製
登入後複製
有效表單提交

要將瀏覽器指向特定頁面,我們使用phpunit_extensions_selenium2testcase類中的URL方法。該URL與提供給setBrowserurl方法的url相對。因此,將瀏覽器指向索引頁面後,我們填寫並提交表格,然後測試預期的成功消息。

<span>public function tearDown()
</span><span>{
</span>    <span>$this->stop();
</span><span>}</span>
登入後複製
登入後複製
登入後複製
>假設您的硒服務器正在啟動並運行,請繼續使用Phpunit Tests/Accentance/userubscriptionTest.php進行測試。這將創建一個新的瀏覽器會話並開始填寫表單。我們期望一切都通過一個成功的斷言來通過。

>

將硒與phpunit一起使用

一些測試失敗,測試持續時間太短了,我們無法觀察出什麼問題。 PHPUNIT具有使用CurrentsCreenshot方法捕獲失敗測試的屏幕截圖,該方法返回了我們可以保存的斑點圖像。

<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>
登入後複製
> BYCSSSELECTOR方法允許我們使用CSS選擇器從頁面檢索元素,在這種情況下為錯誤段落。我們聲稱使用來自數據提供商方法的錯誤消息字段的錯誤消息是否如預期。 >

我們的表單僅包含基本交互,例如選擇元素,設置值,提交表單等。但是,我們還可以在按鈕或鏈接元素上使用單擊方法來驗證目標頁面是否按預期工作。 >

使用另一個瀏覽器

>我們使用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>
登入後複製
登入後複製
登入後複製

將硒與phpunit一起使用

文檔準備就緒嗎?

>

>如果您的頁面內容是通過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>
登入後複製
登入後複製
登入後複製

>本文簡要介紹了與phpunit一起接受接受測試的簡要介紹。通常,您可以將硒用於需要瀏覽器自動化的任何東西。如果您有任何評論或疑問,請務必在下面發布它們,我會盡力回答它們。

經常詢問有關將硒與phpunit一起使用的問題(常見問題解答)

>如何在php?

中安裝phpunit和selenium webdriver,以在PHP中安裝PHPUNIT和Selenium Webdriver,您需要使用Composer,Composer是PHP的依賴關係管理工具。首先,如果還沒有安裝作曲家。然後,在您的終端中運行以下命令以安裝phpunit:Composer需要-DEV phpunit/phpunit ^9。對於Selenium WebDriver,請使用命令:Composer需要-DEV php-webdriver/webdriver。這將在您的php項目中同時安裝Phpunit和Selenium Webdriver。

>如何使用Selenium運行PHPUNIT測試?

使用Selenium進行Phpunit測試,您需要編寫測試案例它使用硒驅動器。在測試案例中,您可以使用WebDriver命令與瀏覽器進行交互。準備好測試用例後,您可以使用Phpunit命令行工具運行它。只需在終端中導航到您的項目目錄並運行命令:phpunit mytest.php,其中“ mytest.php”是您的測試文件的名稱。

>

>如何將phpunit中的斷言與硒中使用?它們對於確定測試是否通過還是失敗至關重要。在使用Selenium的Phpunit測試中,您可以使用斷言檢查Web元素的狀態。例如,您可以斷言存在某個元素,可見或包含特定文本。為此,您可以使用phpunit提供的斷言方法,例如assertequals,asserttrue或AspertContains。

>

>我如何使用selenium phpunit中的瀏覽器會話?使用WebDriver的會話方法完成了使用Selenium的Phpunit。當您創建WebDriver的新實例時,將啟動一個新的瀏覽器會話。您可以使用各種方法(例如navigate(),refresh()或close()與此會話進行交互。要結束會話,您可以使用Quit()方法,該方法將關閉所有窗口並結束會話。

如何使用selenium中的phpunit中的ajax請求?在使用硒的phpunit中,可能會很棘手,因為您需要等待ajax調用才能完成,然後才能與更新的元素進行交互。 Selenium WebDriver為此目的提供WebDriverWait類。您可以使用它等待某個條件在繼續之前。例如,您可以等待可見或可單擊的元素。

>

>如何在不同瀏覽器上使用Selenium運行phpunit測試?

selenium web Driver支持多個瀏覽器,包括Chrome,Firefox,Firefox,Firefox,Firefox,Firefox, Safari和Internet Explorer。要在其他瀏覽器上運行Phpunit測試,您需要為該瀏覽器創建一個新的WebDriver實例。例如,要使用Firefox,您將創建一個新的FirefoxDriver實例。然後,您可以使用此驅動程序來運行測試。

>如何使用selleenium在phpunit中使用selleenium(sellenium)處理phpunit中的幀和iframe? )WebDriver的方法。此方法使您可以將上下文切換到其他幀或iFrame。與框架內部的元素進行交互後,您可以使用switchto() - > defaultContent()方法切換回主內容。

如何在Phpunit測試中使用Selenium進行屏幕截圖?可以使用web驅動器的takeCreensHot()方法在Phpunit測試中使用Selenium進行Selenium進行屏幕截圖。此方法為當前窗口進行屏幕截圖,並將其返回為PNG格式的字符串。然後,您可以將此字符串保存到文件中以創建屏幕截圖。

我如何使用Manage() - > getCookies() - > getCookies()方法在phpunit中處理Phpunit中的cookie?此方法將所有cookie作為數組返回。您還可以使用Manage() - > AddCookie(),Manage() - > deletecookie()和Manage() - > deleteallcookies()方法來操縱cookie。並行的硒

>並行進行硒可以顯著加速您的測試套件。這可以使用硒網格來實現,這使您可以同時在多台機器和瀏覽器上運行測試。要使用Selenium Grid,您需要設置一個輪轂和節點,然後配置WebDriver以連接到集線器。

以上是將硒與phpunit一起使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1658
14
CakePHP 教程
1415
52
Laravel 教程
1309
25
PHP教程
1257
29
C# 教程
1231
24
會話如何劫持工作,如何在PHP中減輕它? 會話如何劫持工作,如何在PHP中減輕它? Apr 06, 2025 am 12:02 AM

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

說明PHP中的不同錯誤類型(注意,警告,致命錯誤,解析錯誤)。 說明PHP中的不同錯誤類型(注意,警告,致命錯誤,解析錯誤)。 Apr 08, 2025 am 12:03 AM

PHP中有四種主要錯誤類型:1.Notice:最輕微,不會中斷程序,如訪問未定義變量;2.Warning:比Notice嚴重,不會終止程序,如包含不存在文件;3.FatalError:最嚴重,會終止程序,如調用不存在函數;4.ParseError:語法錯誤,會阻止程序執行,如忘記添加結束標籤。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? 說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

什麼是HTTP請求方法(獲取,發布,放置,刪除等),何時應該使用? 什麼是HTTP請求方法(獲取,發布,放置,刪除等),何時應該使用? Apr 09, 2025 am 12:09 AM

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

解釋PHP 7.4中引入的箭頭功能(短閉合)。 解釋PHP 7.4中引入的箭頭功能(短閉合)。 Apr 06, 2025 am 12:01 AM

箭頭函數在PHP7.4中引入,是短閉包的簡化形式。 1)它們使用=>運算符定義,省略function和use關鍵字。 2)箭頭函數自動捕獲當前作用域變量,無需use關鍵字。 3)它們常用於回調函數和短小計算,提高代碼簡潔性和可讀性。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

See all articles