firefox是什么浏览器_Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试

根据statcounter统计,到2020年6月,Mozilla Firefox浏览器在全球浏览器市场中所占份额为4.25%,因此,对于每个Selenium测试用例,Mozilla Firefox浏览器都是不可避免的。 Mozilla开发人员推出了Geckodriver(也称为Selenium Firefox驱动程序),以帮助测试人员使用Firefox浏览器自动进行浏览器测试。

在本文中,我们将研究Selenium Firefox驱动程序的基础知识,以及如何在系统中下载和设置它。然后,我们将使用Selenium Firefox驱动程序运行自动化脚本,以在Mozilla Firefox浏览器上进行测试。

什么是Selenium Firefox驱动程序?

每个浏览器都有一个独特的引擎,负责呈现网站的UI。Gecko一直是浏览器引擎,负责通过Mozilla Firefox浏览器显示Web元素。

GeckoDriver也称为Selenium Firefox驱动程序,它充当代理,可在Firefox浏览器实例上执行Selenium测试。当您使用Firefox执行Selenium测试时,JSON有线协议会将说明提供给Selenium Firefox驱动程序,即Selenium GeckoDriver。然后GeckoDriver根据指令在浏览器实例中执行相关操作,并通过HTTP服务器以HTTP协议发送响应。这是说明Selenium WebDriver架构的图像。您会注意到Selenium Firefox Driver在哪里起作用。

bf0cad3665a4d22e28b320f4a940412f.png

您是否应该在Selenium测试脚本中包括GeckoDriver?

尽管不是最受欢迎的浏览器,但Mozilla Firefox 自2002年问世以来一直是浏览器大战中的知名参与者。Firefox在Chrome之后仍然占据着很大的浏览器市场份额。我敢肯定,您可能在某个时候已经对Google Chrome和Mozilla Firefox产生了争论。实际上,许多同事更喜欢Mozilla Firefox作为默认浏览器,而不是Google Chrome。让我们看看从2019年6月到2020年7月的浏览器市场份额。

fca566b39db68df1135a06661d511b65.png

现在,相比于Chrome浏览器的69.42%的市场份额,8.48%的外观看起来要少得多,但是您注意到了什么吗?

Mozilla Firefox是第三受欢迎的桌面浏览器,并且与Safari并驾齐驱。

那么,您是否应该在Selenium测试脚本中包含Firefox驱动程序?

是的,毫无疑问。Firefox浏览器具有8.48%的稳定市场份额,已经成为跨浏览器测试的必然选择。如果您不将Firefox驱动程序包含在Selenium测试脚本中,那么您可能会错过许多潜在的潜在客户和有希望的客户。

话虽如此,让我们在您的操作系统中下载并设置Selenium Firefox驱动程序。

下载并设置GeckoDriver / Selenium项目的Firefox驱动程序

第1步:可以从Mozilla的官方GitHub存储库下载Selenium Firefox Driver或Selenium GeckoDriver 。转到链接,然后滚动到页面底部。打开“ 资产”菜单,然后将Selenium Firefox驱动程序分别下载到您的操作系统。

902221b6b528a6ac3140f289666f488b.png

步骤2:解压缩下载的文件。

步骤3:将GeckoDriver(geckodriver.exe)复制到Firefox浏览器所在的文件夹中。这样,如果在测试代码中创建了Selenium Firefox Driver实例,则可以避免给出Selenium GeckoDriver的绝对路径。

702635630567acf63850063c7e940bac.png

为Selenium项目调用Selenium Firefox驱动程序

为了将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驱动程序中进行Selenium C#测试

NUnit是一个流行的开源Web测试框架。它与Selenium C#一起用于自动浏览器测试。与其他框架(例如MSTest / Visual Studio,xUnit.NET等)相比,NUnit框架的广泛功能集使其成为更流行的框架。这些框架也可以与C#和Selenium测试套件一起使用。

36%

NUnit中的断言有助于使代码更具模块化,从而减少了对源代码的维护。

这是NUnit测试的基本执行流程。初始化和取消初始化的必要步骤是[Setup]和[TearDown]批注的一部分。

dd45068fca6a08350338b37e375275c0.png

牢记基本流程。让我们动手使用带有NUnit的Selenium和Geckodriver进行测试自动化。为了演示使用NUnit进行Selenium测试自动化,我们有两个示例测试用例。详情在下面提及-

测试用例– 1

  1. 导航到URL https://lambdatest.github.io/sample-todo-app/

  2. 选择前两个复选框

  3. 将“将项目添加到列表”发送到ID = sampletodotext的文本框

  4. 单击添加按钮,并验证是否已添加文本

测试用例– 2

  1. 导航到URL https://www.lambdatest.com

  2. 找到描述为“自动”的悬停元素

  3. 单击了解更多信息选项以打开目标网页

  4. 如果驱动程序标题与预期标题不匹配,则引发断言

使用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);             /* 执行等待以检查输出 */            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();             /* 执行等待以检查输出 */            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浏览器用于跨浏览器测试,因此我们在执行任何测试之前创建了Firefox Web Driver实例。IWebDriver(它是OpenQA.Selenium命名空间的一部分)用于创建Selenium Firefox驱动程序实例。

namespace Firefox_Demo{    class Firefox_Demo    {        ......................................        ......................................        IWebDriver driver;         [SetUp]        public void start_Browser()        {            driver = new FirefoxDriver();            driver.Manage().Window.Maximize();        }    }    ......................................    ......................................}

此初始化是[SetUp]批注中实现的一部分。取消初始化过程(即释放Selenium Firefox驱动程序实例)作为[TearDown]批注中实现的一部分完成。

测试用例– 1

使用Firefox浏览器的Inspect工具,我们找到名称为li1,li2的元素(复选框)

a2371d2d2ea6edecd3ad00dff6b96efe.png

找到复选框后,我们将找到必须添加目标文本的文本框。我们利用XPath进行相同的操作。具有布尔条件约束的断言用于验证测试用例的正确性。

IWebElement textfield = driver.FindElement(By.Id("sampletodotext"));textfield.SendKeys(itemName);// 执行等待以检查输出IWebElement addButton = driver.FindElement(By.Id("addbutton"));addButton.Click();

下面显示的是执行快照,在该快照中,我们可以看到新项目已添加到列表中-

b6a5fe558d57631eab71a99786975748.png

测试用例– 2

为了找到显示名称为Automation的元素,我们使用ExecuteScript方法在当前窗口的上下文中执行JavaScript。

d355537aeed7bbfa3307dff537ffce6a.png

我们执行500像素的垂直滚动,因为要搜索的元素只能位于滚动之后。

IJavaScriptExecutor js = driver as IJavaScriptExecutor; js.ExecuteScript("window.scrollBy(0,500)");

等待30秒,以确保该元素可见。可见元素(名称= Automation)后,将使用Actions类的MoveToElement()方法执行悬停操作。

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约束将预期的窗口标题与当前页面的标题进行比较。如果标题不匹配,则引发断言。

d6c96820d9cabae1a0805819fb20a0eb.png

String url_title = driver.Title; Assert.That(expected_url_title, Is.EqualTo(url_title));

结论

Mozilla Firefox在浏览器大战中占据主导地位。因此,开发人员需要牢记跨浏览器开发实践。测试人员需要在其Selenium测试套件中合并Selenium Geckodriver或Selenium Firefox Driver。

7776d9d7394bd5e44737163136259263.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab绘制簇状图,用matplotlib自定义绘制柱形图

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsdf pd.read_excel("D:\我的文档\jupyter notebook.xlsx")dfsns.set(style "white", font_scale 1.2)# 解决中文乱码plt.rcParams[ "font.sans-serif"] "simhe…

hp打印机怎么连接电脑_打印机怎么连接电脑?安装打印机图文教程

怎么安装打印机?有用户买了打印机后却不懂该如何安装并且连接电脑,下面就给大家分享打印机的具体安装方法。本地打印机安装:1.先把随机配送光盘放进光驱,如电脑没有光驱的话,可以直接把文件拷到U盘,再放到电…

toad dba suite for oracle 12,Toad DBA Suite 和Toad Development Suite的区别

这两个版本都包括了Toad、Sql Optimizer、Data Modeler、Toad DataAnalysi、Konwledges等基本软件。DBA版又增加了Spotlight On Oracle单机版,Development版则增加了Benchmark for Oracle和Code Tester这两个软件。可以认为DBA版和开发版是不同的打包方式。(以上内容…

正泰eplan_【万泉河】给EPLAN初学者的建议:不用宏

首先声明,我不是EPLAN的高手,对画电气图的熟悉程度,远远不如我对PLC和WinCC的来的得心应手。但在这里,把我个人一点点经验推荐给大家。以避免新手在初学EPLAN的时候遭遇过多的挫折,从而一次次的由入门到放弃。这是我个…

码工里开关灯为什么遮罩层在下面_装修公司为什么推荐无主灯设计?

此前的文章,我们曾多次提到无主灯设计,包括它的一些做法和注意事项,介绍过它高明的艺术手法。但是,我们从未讲解过无主灯设计的一些缺点和盲区,所以,也许笔者下面要讲的内容,将会颠覆你此前对无主灯设计的认识。无主灯设计客厅缺点一:挑空间(层高)一直以来,我们可能都认为,无主…

oracle导入 不是dba,IMP-00013只有DBA才能导入由其他DBA导出的文件

IMP-00013 只有 DBA 才能导入由其他 DBA 导出的文件--实例演示---system用户导出C:\Users\ZML>exp system/zml fileD:\zml.dmp log D:\zml.log tables (zml)Export: Release 11.2.0.1.0 - Production on 星期一 4月 21 21:39:12 2014Copyright (c) 1982, 2009, Oracle and…

为什么安监控需要公网ip_媲美专线的视频监控组网,无须公网ip

众所周知,视频监控是安防系统的重要组成部分,各行各业必备,比如:超市、学校、公司、厂区等等随着社会的发展,利用网络传输搭建视频监控系统,已经成为了各行各业的普遍需求今天给大家带来,媲美专…

百度seo排名点击器app_百度SEO优化和百度竞价优缺点 - 百度整站排名

原出处:超级排名系统原文链接:百度SEO优化和百度竞价优缺点 - 超级排名系统SEO优化的优势:1、低价:在百度优化排名中,维持一年排名的成本可能只有一到两个月的竞价成本,这比竞价便宜得多,超级排…

html网页放大时文字不换行_WEB前端-html基础

一、介绍1、HTML概念HTML(Hypertext Mark-up Language)即超文本标记语言2.HTML特点HTML不需要编译,直接由浏览器执行HTML文件是一个文本文件HTML文件必须使用html或htm为文件名后缀HTML大小写不敏感,HTML与html一样3.HTML基础语法…

python电脑编程求圆的面积案例_学Python划重点七 网络编程(UPD Socket编程、上传文件实例、计算圆的面积实例)...

一、UPD Socket 编程 socket 对象中与UDP Socket 服务器编程有关的方法是bind() ,注意不需要listen() 和accept() , 这是因为UDP 通信不需要像TCP 一样监听端口,建立连接。 socket.recvfrom(buffsize) : 接收UDP Socket 数据&…

linux中将 home目录备份成,6种优化Linux系统备份的应用与技巧

【51CTO.com快译】当转为使用Linux时,你可能会注意到你所使用的版本会带有一个默认的备份工具。然而,可能该工具并没有被设置好去备份你系统中所有重要的部分。而且,使用该默认工具也可能导致它以比预期更低的效率去产生一些更大的备份数据。…

python数据分析函数大全_Python常用数据分析函数集合

1.Map函数 - 列表解析 ①.map()函数解析 (1).python源码信息C:\Users\ArSang>python Python3.6.3rc1 (v3.6.3rc1:d8c174a, Sep 19 2017, 16:39:51) [MSC v.1900 64bit (AMD64)] on win32 Type"help", "copyright", "credits" or "licens…

我的世界linux开服权限不足,我的世界路由器开服怎么获得超级管理员权限

我的世界路由器开服怎么获得超级管理员权限。小伙伴们使用路由器开服的时候会发现一个明显的问题,部分路由器并没有给你最高管理员的权限,导致大家开服的时候出现各种问题。那么路由器开服怎么才能快速获得超级管理员的权限呢?说明:为什么路…

python无法调用安装的包_如何使用python命令和安装包进行安装Django框架

在python语言的框架中,Django框架是一种Web应用框架,这个框架的版本需要跟python的版本搭配上。其中,Django框架可以使用命令安装,也可以使用下载压缩包进行安装。下面利用实例说明Django框架安装方法和过程,操作如下&…

idea卡顿的解决方法_lt;绝地求生/PUBG/解决卡顿方法(停机9小时)维护gt;9月16日(星期三) 08点30分amp;崩溃...

【正式服不停机维护公告】我们将在北京时间10月7日(星期三) 10点开始正式服的不停机维护。- 维护开始时间:10月7日(星期三) 10点 - 维护内容:优化服务器以及BUG修复1. 修复了在四排模式下队伍列表中无法显示队员的问题;2. 修复了警示胶带背包…

安装应用需要打开未知来源权限_打开安卓这个开关 不让流氓软件肆意妄为

1月21消息,国外媒体Cybernews曝光了数款存在安全隐患的安卓应用,从这些应用中我们发现大都是相机类应用。根据Cybernews的说法这些应用会寻求多项权限,而多数权限和应用本身功能并不相关。其实在国内这类软件也并不缺乏,他们通常会…

git for windows_手把手教会舍友玩 Git (包教包会,再也不用担心他的学习)

作 者: BWH_Steven 原文链接:https://www.cnblogs.com/ideal-20/p/13644420.html舍友长大想当程序员,我和他爷爷奶奶都可高兴了,写他最喜欢的喜之郎牌Git文章,学完以后,再也不用担心舍友的学习了(狗头)哪里…

stotybord如何添加子视图_SQL复杂查询-子查询

视图:1.视图的概念引入:SQL数据库里面存放的是SQL语句,视图中查看到的SQL查询语句,当我们运用客户端连接到视图时候,视图会运行里面的查询语句,从库中查找出数据,保存在临时表里面。当客户端和数…

springboot 2.3_Spring Boot 应用监控,早发现早

小Hub领读:服务都需要监控,SpringBoot项目中,你常用哪些监控模块呢?actuator?admin?作者:小小____https://segmentfault.com/a/1190000022945443当一个 Spring Boot 应用运行的时候,开发者需要对 Spring …

sql statements_Postgresql监控sql模块之pg_stat_statements模块--部署篇

概述今天主要介绍一下PG一个很重要的模块--pg_stat_statements模块,对于做性能观察还是很不错的。一、pg_state_statements模块简介1、简介pg_stat_statements模块提供一种方法追踪一个服务器所执行的所有 SQL 语句的执行统计信息,可以用于统计数据库的资…