>本文最初發表在lambdatest上。感謝您支持使SitietPoint成為可能的合作夥伴。 硒是一種流行的自動化測試框架,主要用於跨瀏覽器測試。它是開源的,非常適合對Firefox,Chrome,Internet Explorer和Microsoft Edge等不同瀏覽器進行自動測試。 Selenium已成為著名的框架,並為其他測試框架(例如HP QTP(快速測試專業))和AKA HP UFT(統一功能測試)提供了激烈的競爭。該Selenium Webdriver的本教程將幫助您對Selenium Suite,Selenium Webdriver Architecture的組件的基本了解,並將向您展示如何運行自動化以測試使用Selenium Web Driver使用Google Chrome,Mozilla Firefox和Mozilla Firefox和Mozilla Firefox和Mozilla Firefox和Mozilla Firefox和Mozilla firefox,Mozilla Firefox和Mozilla Firefox和Mozilla firoge compatibility測試網站Internet Explorer。
硒是不同工具的組合,每個工具在自動化網絡測試中起著至關重要的作用。讓我們深入研究Webdriver教程。
>鑰匙要點
>硒網格
> Selenium IDE是一個簡單的Firefox插件,用於錄製和播放腳本。但是,Selenium IDE只能用於編寫自動化腳本以自動化簡單用例的測試。硒IDE不支持有條件的語句,異常處理,循環,屏幕截圖捕獲等。對於自動化複雜用例,大多數開發人員和測試人員都喜歡選擇腳本測試而不是記錄和重播測試。硒測試套件由硒遙控器(RC)或Selenium webdriver組成。
> Selenium IDE可用於不同操作系統,即Windows,Linux,Mac OS等。可以在此處下載Firefox的Selenium IDE。
>硒遙控器(RC)硒服務器是Selenium RC的核心組件。 Selenium RC的一些核心功能/職責如下:
>包含核心硒框架,它主要負責在瀏覽器中註入相同
> Selenium Webdriver直接與瀏覽器通信,因此它不需要任何單獨的組件,例如Selenium Server。它支持對軟件測試儀的頂級編程語言,即C#,Ruby,Java,Python,Perl等。執行。您可以從下面提到的鏈接中下載Selenium webdriver:
> Selenium Webdriver體系結構
可以查看構成Selenium webdriver體系結構的主要塊:
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
JSON WIER協議
> JSON WIER協議
>瀏覽器驅動程序
>由於瀏覽器驅動程序可用於Chrome,Firefox,Internet Explorer,Safari和Microsoft Edge等流行瀏覽器,因此您可以使用其中任何一個用於執行交叉瀏覽器測試。應該注意的是,您無法在瀏覽器無法公開的瀏覽器上對網站進行交叉瀏覽器測試。
>
> Selenium webdriver In Action
>
> firefox webdriver示例<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
>讓我們瀏覽代碼。在我們執行任何操作之前,所有必要的模塊是使用“import
>一旦瀏覽器上的所有操作都完成,ff_driver.close()將被調用以進行必要的清理並釋放資源。
> 為了執行代碼,您可以在Eclipse IDE中調用Ctrl F9或使用Python命令行選項來調整CTRL F9:>
> chrome webdriver示例
>我們的Selenium Webdriver教程中的上一節,我們使用了Firefox Webdriver。在本節中,我們會查看如果您使用Chrome瀏覽器進行測試,則需要的更改。 You should ensure that the standalone ChromeDriver binary (which is different than the Chrome browser binary) is available in the right path or it is present as a part of the webdriver.chrome.driver environment variable.如果您使用的是Windows,則需要首先從此處下載Chrome Webdriver。將Chromedriver.exe粘貼到您安裝Python的位置(在我們的情況下,這是默認的安裝路徑,即C:Python27Scripts)。您必須加載相應的Webdriver [第8行],其餘代碼保持不變。以下是代碼段,更改(Chrome Webdriver所需的)以不同的顏色突出顯示:
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Firefox Instance </span>ff_driver <span>= webdriver.Firefox() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>>終於,在我們的Selenium Webdriver教程中,我們將查看另一個示例,在該示例中,我們使用ActionChinains模塊,該模塊用於自動化低級交互,例如鼠標運動,按鈕運動,上下文菜單互動等,以確保強大UI設計。有關ActionChains的更多詳細信息可以在此處找到。
>
<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Chrome Instance </span>ff_driver <span>= webdriver.Chrome() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>>在上面的示例代碼中可以看到,我們保留了用於創建Firefox WebDriver實例的代碼[第9〜16行]。有幾個新模塊被導入 - 動作鍊和鑰匙。一旦所需的網頁即https://www.lambdatest.com/瀏覽器打開,通過查看鏈接文本(使用Find_element_by_link_text方法),可以執行搜索操作。在我們的示例中,網頁上搜索的鏈接文本是“支持” [行20〜22]。
>遇到搜索條件後,執行(CTRL單擊)操作,從而在“新標籤”中打開該頁面[第26〜30行]。 ActionChains模塊用於執行該操作。輸出在下面:
>我們已經使用了動作鏈,因為它很適合我們上面展示的示例。您可以在此處查看Selenium Webdriver模塊下的不同模塊(對於Python)。儘管我們使用Python語言進行實施,但您可以使用您選擇的編程語言(C#,Java,Perl,Ruby,Php)。
本地webdriver - 不太刻板的方法
如果您計劃在有限數量的“瀏覽器操作系統設備”組合中測試您的網站,則可以使用本地WebDriver進行測試。但是,如果組合的數量更多,則方法可能會步斷。您不能為每種組合都有本地設置,因為這不是一種可擴展的方法,也可能是非常昂貴的。>
>使用lambdatest的遠程webdriver運行硒腳本> 例如,如果需要在Ubuntu OS Chrome上執行測試,則服務器/集線器將通過註冊的服務器註冊的客戶端/節點的功能進行掃描,並將請求轉移到具有匹配功能的客戶端。硒架構中只能有一台服務器和數量的客戶端。有關遠程驅動程序API的更多詳細信息可以在lambdatest網站上的其他博客上獲得。
>登錄到lambdatest後,您應該通過訪問lambdatest功能生成器來生成節點所需的功能。選擇您喜歡的編程語言(在我們的情況下是Python)和適當的OS/瀏覽器組合。您可以在設置功能時啟用屏幕截圖和視頻錄製功能。如下所示,我們的要求是測試應在Windows 10機器上安裝的Firefox(版本64.0)上執行。該要求的功能如下:
>下面的
是Lambdatest功能生成器的屏幕截圖:<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
>由於我們將在Lambdatest服務器上使用Selenium Grid,因此我們需要修改代碼以訪問其云基礎架構(也稱為遠程URL)。遠程URL如下所示:
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
@hub.lambdatest.com/wd/hub是在Lambdatest上執行測試的Lambdatest上的Selenium Grid設置。為了用戶授權目的,將User_name(用於Lambdatest上的註冊)和App_key(訪問 - toke)附加到網格URL。串聯字符串形成遠程_url。現在,您已經知道了遠程WebDriver API和功能生成器,讓我們端口以適合這些要求的示例。
>parallel_test_example-1.py
<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Firefox Instance </span>ff_driver <span>= webdriver.Firefox() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>>讓我們進行代碼演練,尤其是主要更改:
>將用戶名和訪問權限附加到烤架上。組合形成了執行測試案例執行的遠程URL。
>
異常 - 列出在執行測試代碼期間遇到的異常。 >
>元數據 - 它包含有關執行測試的測試環境的詳細信息。在我們的情況下,該測試是在安裝在Windows 10機器上的Firefox 64.0上執行的。您甚至可以獲取有關瀏覽器配置的詳細信息。
parallel_test_example-2.py
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
>通過調用Python命令在兩個不同的終端上並行執行兩個測試。
下面的
>
> selenium webdriver上的常見問題(常見問題解答)用於跨瀏覽器測試
>
>我如何使用selenium webdriver? 🎜>處理動態的網絡元素在Selenium Webdriver中可能具有挑戰性。但是,您可以使用各種策略來處理它們。一種常見的方法是使用硒的明確等待功能。這使您的腳本可以暫停一定時間,直到滿足特定條件為止,例如DOM中的元素的存在。另一種方法是使用XPATH或使用通配符字符的CSS選擇器來匹配元素屬性的動態部分。 >如何使用Selenium webdriver運行並行測試以更快地執行? 運行並行測試在Selenium WebDriver中,您可以使用支持並行執行的測試框架,例如TestNG或Pytest。在testng中,您可以在testng.xml文件中的套件標籤中設置並行屬性,以將其指定為方法或測試,並將線程計數屬性指定為要使用的線程數。在PYTEST中,您可以使用pytest -xdist插件,並使用-n選項指定命令行中的進程數。>如何使用Selenium WebDriver進行測試故障的屏幕截圖?
>如何使用Selenium WebDriver?
> Selenium Webdriver提供了與下拉菜單交互的選擇類。您可以通過將下拉元素傳遞給其構造函數來創建選擇類的對象。然後,您可以使用selectbyvisibletext(),selectbyvalue()或selectbyIndex()方法選擇一個選項。您還可以使用getOptions()方法在下拉列表中獲取所有選項。 如何使用selenium web driver?>我如何使用selenium webdriver?
selenium webdriver提供方法提供方法與cookie互動。您可以使用AddCookie()方法添加cookie,getCookienamed()方法獲取特定cookie,getCookies()獲取所有cookie的方法,以及deletecookie(),deletecookienamed(),deletealllookies()或deleteallcookies()方法刪除cookie。 >如何使用Selenium webdriver來處理Ajax調用? >在Selenium WebDriver中處理Ajax調用可能很棘手,因為它們是異步的,並且可能需要一些時間才能獲取數據。您可以使用明確的等待預期的條件等待等待,直到AJAX調用完成並加載數據。處理鍵盤和鼠標事件的課程。您可以創建一個操作類的對象,並使用其方法,例如click(),doubleclick(),contextClick(),dragandDrop(),keydown(),keyup()等,以模擬各種鍵盤和鼠標操作。 🎜>以上是如何使用Selenium Webdriver進行交叉瀏覽器測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!