firefox是什么浏览器_Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
根據(jù)statcounter統(tǒng)計,到2020年6月,Mozilla Firefox瀏覽器在全球瀏覽器市場中所占份額為4.25%,因此,對于每個Selenium測試用例,Mozilla Firefox瀏覽器都是不可避免的。?Mozilla開發(fā)人員推出了Geckodriver(也稱為Selenium Firefox驅(qū)動程序),以幫助測試人員使用Firefox瀏覽器自動進行瀏覽器測試。
在本文中,我們將研究Selenium Firefox驅(qū)動程序的基礎知識,以及如何在系統(tǒng)中下載和設置它。然后,我們將使用Selenium Firefox驅(qū)動程序運行自動化腳本,以在Mozilla Firefox瀏覽器上進行測試。
什么是Selenium Firefox驅(qū)動程序?
每個瀏覽器都有一個獨特的引擎,負責呈現(xiàn)網(wǎng)站的UI。Gecko一直是瀏覽器引擎,負責通過Mozilla Firefox瀏覽器顯示W(wǎng)eb元素。
GeckoDriver也稱為Selenium Firefox驅(qū)動程序,它充當代理,可在Firefox瀏覽器實例上執(zhí)行Selenium測試。當您使用Firefox執(zhí)行Selenium測試時,JSON有線協(xié)議會將說明提供給Selenium Firefox驅(qū)動程序,即Selenium GeckoDriver。然后GeckoDriver根據(jù)指令在瀏覽器實例中執(zhí)行相關操作,并通過HTTP服務器以HTTP協(xié)議發(fā)送響應。這是說明Selenium WebDriver架構(gòu)的圖像。您會注意到Selenium Firefox Driver在哪里起作用。
您是否應該在Selenium測試腳本中包括GeckoDriver?
盡管不是最受歡迎的瀏覽器,但Mozilla Firefox?自2002年問世以來一直是瀏覽器大戰(zhàn)中的知名參與者。Firefox在Chrome之后仍然占據(jù)著很大的瀏覽器市場份額。我敢肯定,您可能在某個時候已經(jīng)對Google Chrome和Mozilla Firefox產(chǎn)生了爭論。實際上,許多同事更喜歡Mozilla Firefox作為默認瀏覽器,而不是Google Chrome。讓我們看看從2019年6月到2020年7月的瀏覽器市場份額。
現(xiàn)在,相比于Chrome瀏覽器的69.42%的市場份額,8.48%的外觀看起來要少得多,但是您注意到了什么嗎?
Mozilla Firefox是第三受歡迎的桌面瀏覽器,并且與Safari并駕齊驅(qū)。
那么,您是否應該在Selenium測試腳本中包含F(xiàn)irefox驅(qū)動程序?
是的,毫無疑問。Firefox瀏覽器具有8.48%的穩(wěn)定市場份額,已經(jīng)成為跨瀏覽器測試的必然選擇。如果您不將Firefox驅(qū)動程序包含在Selenium測試腳本中,那么您可能會錯過許多潛在的潛在客戶和有希望的客戶。
話雖如此,讓我們在您的操作系統(tǒng)中下載并設置Selenium Firefox驅(qū)動程序。
下載并設置GeckoDriver / Selenium項目的Firefox驅(qū)動程序
第1步:可以從Mozilla的官方GitHub存儲庫下載Selenium Firefox Driver或Selenium GeckoDriver?。轉(zhuǎn)到鏈接,然后滾動到頁面底部。打開“?資產(chǎn)”菜單,然后將Selenium Firefox驅(qū)動程序分別下載到您的操作系統(tǒng)。
步驟2:解壓縮下載的文件。
步驟3:將GeckoDriver(geckodriver.exe)復制到Firefox瀏覽器所在的文件夾中。這樣,如果在測試代碼中創(chuàng)建了Selenium Firefox Driver實例,則可以避免給出Selenium GeckoDriver的絕對路徑。
為Selenium項目調(diào)用Selenium Firefox驅(qū)動程序
為了將Selenium與GeckoDriver或Selenium FirefoxDriver一起使用,必須在初始化Firefox類的新實例之前包含相應的程序包(或類)。以下是可通過流行語言使用帶有GeckoDriver的Selenium的一些方法。
Selenium C#
...........................using OpenQA.Selenium.Firefox;...................................................... namespace Firefox_Demo{ class Firefox_Demo { ........................... ........................... IWebDriver driver; [SetUp] public void start_Browser() { driver = new FirefoxDriver(); driver.Manage().Window.Maximize(); } ........................... ........................... [TearDown] public void close_Browser() { driver.Quit(); } }}Python
...........................from selenium import webdriver...................................................... class Automation_Test(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.maximize_window() ........................... ........................... def tearDown(self): Quit selenium driver self.driver.quit() if __name__ == "__main__": unittest.main()Java
package org.package_name;import org.openqa.selenium.firefox.FirefoxDriver;...................................................... public class ClassTest{ private WebDriver driver; ........................... ........................... @BeforeClass public void setUp(){ driver = new FirefoxDriver(); driver.manage().window().maximize(); ........................... ........................... } ........................... ........................... @AfterClass public void tearDown() throws Exception { if (driver != null) { driver.quit(); } }}使用NUnit Framework在Firefox驅(qū)動程序中進行Selenium C#測試
NUnit是一個流行的開源Web測試框架。它與Selenium C#一起用于自動瀏覽器測試。與其他框架(例如MSTest / Visual Studio,xUnit.NET等)相比,NUnit框架的廣泛功能集使其成為更流行的框架。這些框架也可以與C#和Selenium測試套件一起使用。
36%
NUnit中的斷言有助于使代碼更具模塊化,從而減少了對源代碼的維護。
這是NUnit測試的基本執(zhí)行流程。初始化和取消初始化的必要步驟是[Setup]和[TearDown]批注的一部分。
牢記基本流程。讓我們動手使用帶有NUnit的Selenium和Geckodriver進行測試自動化。為了演示使用NUnit進行Selenium測試自動化,我們有兩個示例測試用例。詳情在下面提及-
測試用例– 1
導航到URL?https://lambdatest.github.io/sample-todo-app/
選擇前兩個復選框
將“將項目添加到列表”發(fā)送到ID = sampletodotext的文本框
單擊添加按鈕,并驗證是否已添加文本
測試用例– 2
導航到URL?https://www.lambdatest.com
找到描述為“自動”的懸停元素
單擊了解更多信息選項以打開目標網(wǎng)頁
如果驅(qū)動程序標題與預期標題不匹配,則引發(fā)斷言
使用Selenium Firefox Driver和NUnit進行測試的實施
using NUnit.Framework;using OpenQA.Selenium;using OpenQA.Selenium.Firefox;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Text.RegularExpressions;using OpenQA.Selenium.Support.UI;using OpenQA.Selenium.Interactions; namespace Firefox_Demo{ class Firefox_Demo { String test_url_1 = "https://lambdatest.github.io/sample-todo-app/"; String test_url_2 = "https://www.lambdatest.com"; IWebDriver driver; [SetUp] public void start_Browser() { driver = new FirefoxDriver(); driver.Manage().Window.Maximize(); } [Test, Order(1)] public void test_ff_1() { driver.Url = test_url_1; String itemName = "Adding item to the list"; System.Threading.Thread.Sleep(2000); // 單擊第一個復選框 IWebElement firstCheckBox = driver.FindElement(By.Name("li1")); firstCheckBox.Click(); // 單擊第二個復選框 IWebElement secondCheckBox = driver.FindElement(By.Name("li2")); secondCheckBox.Click(); // 輸入商品名稱 IWebElement textfield = driver.FindElement(By.Id("sampletodotext")); textfield.SendKeys(itemName); // 點擊添加按鈕 IWebElement addButton = driver.FindElement(By.Id("addbutton")); addButton.Click(); // 已驗證添加的商品名稱 IWebElement itemtext = driver.FindElement(By.XPath("/html/body/div/div/div/ul/li[6]/span")); String getText = itemtext.Text; //檢查是否存在新添加的項目????????????// 條件約束(布爾) Assert.That((itemName.Contains(getText)), Is.True); ????????????/*?執(zhí)行等待以檢查輸出?*/ System.Threading.Thread.Sleep(2000); Console.WriteLine("Firefox - Test 1 Passed"); } [Test, Order(2)] public void test_ff_2() { driver.Url = test_url_2; String hover_xpath = "/html/body/div[2]/section[2]/div/div/div[2]/div/div[1]"; String learn_more_xpath = "/html/body/div[2]/section[2]/div/div/div[2]/div/div[1]/div[2]/span/a"; String expected_url_title = "Online Appium and Selenium Automation Testing Tool | Selenium Grid for Web Automation Testing"; System.Threading.Thread.Sleep(2000); IJavaScriptExecutor js = driver as IJavaScriptExecutor; js.ExecuteScript("window.scrollBy(0,500)"); var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30)); var element = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath(hover_xpath))); Actions action = new Actions(driver); action.MoveToElement(element).Perform(); // 由于該元素可見,因此我們應單擊“了解更多”部分 var more_element = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath(learn_more_xpath))); more_element.Click(); /* 執(zhí)行等待以檢查輸出 */ System.Threading.Thread.Sleep(2000); String url_title = driver.Title; Assert.That(expected_url_title, Is.EqualTo(url_title)); Console.WriteLine("Firefox - Test 2 Passed"); } [TearDown] public void close_Browser() { driver.Quit(); } }}代碼演練(通用步驟)
由于Firefox瀏覽器用于跨瀏覽器測試,因此我們在執(zhí)行任何測試之前創(chuàng)建了Firefox Web Driver實例。IWebDriver(它是OpenQA.Selenium命名空間的一部分)用于創(chuàng)建Selenium Firefox驅(qū)動程序?qū)嵗?/p>namespace Firefox_Demo{ class Firefox_Demo { ...................................... ...................................... IWebDriver driver; [SetUp] public void start_Browser() { driver = new FirefoxDriver(); driver.Manage().Window.Maximize(); } } ...................................... ......................................}
此初始化是[SetUp]批注中實現(xiàn)的一部分。取消初始化過程(即釋放Selenium Firefox驅(qū)動程序?qū)嵗?作為[TearDown]批注中實現(xiàn)的一部分完成。
測試用例– 1
使用Firefox瀏覽器的Inspect工具,我們找到名稱為li1,li2的元素(復選框)
找到復選框后,我們將找到必須添加目標文本的文本框。我們利用XPath進行相同的操作。具有布爾條件約束的斷言用于驗證測試用例的正確性。
IWebElement?textfield?=?driver.FindElement(By.Id("sampletodotext"));textfield.SendKeys(itemName);//?執(zhí)行等待以檢查輸出IWebElement addButton = driver.FindElement(By.Id("addbutton"));addButton.Click();下面顯示的是執(zhí)行快照,在該快照中,我們可以看到新項目已添加到列表中-
測試用例– 2
為了找到顯示名稱為Automation的元素,我們使用ExecuteScript方法在當前窗口的上下文中執(zhí)行JavaScript。
我們執(zhí)行500像素的垂直滾動,因為要搜索的元素只能位于滾動之后。
IJavaScriptExecutor js = driver as IJavaScriptExecutor; js.ExecuteScript("window.scrollBy(0,500)");等待30秒,以確保該元素可見。可見元素(名稱= Automation)后,將使用Actions類的MoveToElement()方法執(zhí)行懸停操作。
var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30));var element = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath(“/html/body/div[2]/section[2]/div/div/div[2]/div/div[1]”))); Actions action = new Actions(driver);action.MoveToElement(element).Perform();單擊“自動化”選項的“了解更多”鏈接(如先前的快照所示)。新頁面打開后,將使用EqualTo約束將預期的窗口標題與當前頁面的標題進行比較。如果標題不匹配,則引發(fā)斷言。
String url_title = driver.Title; Assert.That(expected_url_title, Is.EqualTo(url_title));結(jié)論
Mozilla Firefox在瀏覽器大戰(zhàn)中占據(jù)主導地位。因此,開發(fā)人員需要牢記跨瀏覽器開發(fā)實踐。測試人員需要在其Selenium測試套件中合并Selenium Geckodriver或Selenium Firefox Driver。
戳總結(jié)
以上是生活随笔為你收集整理的firefox是什么浏览器_Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: aba会导致问题_肌肤缺水会导致哪些问题
- 下一篇: mysql 删除另一个表中的_mysql