iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在java中使用Selenium开发一个自动化测试框架
  • 569
分享到

如何在java中使用Selenium开发一个自动化测试框架

2023-06-06 19:06:44 569人浏览 泡泡鱼
摘要

这篇文章给大家介绍如何在java中使用selenium开发一个自动化测试框架,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序、分布式系统和

这篇文章给大家介绍如何在java中使用selenium开发一个自动化测试框架,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序、分布式系统和嵌入式系统应用程序。

一、首先是搭建框架开发环境

按照网上的方法部署eclipse,建立TestAction工程,并Import引用jdk和Selenium-2.44完整包

如何在java中使用Selenium开发一个自动化测试框架

二、继续引用和安装相关jar

首先是要满足数据驱动(场景用例和动作用例、数据用例都需要放到excel表上),就需要引用jxl.rar包(实现调用和操作excel);

需要实现自动化框架(有测试套件、测试层)就需要通过eclipse安装TestNg(网上有相关教程);

三、构建框架的样例代码

实现能够对excel用例数据的调用(通过jxl的引用),创建ExcelData.java类文件(专门用于对excel的调用),以下截取部分代码样例:

     public ExcelData(String fileName, String caseName) {    super();    this.fileName = fileName;    this.caseName = caseName;  }     public Object[][] getExcelData() throws BiffException, IOException {     workbook = Workbook.getWorkbook(new File(getPath()));    sheet = workbook.getSheet(caseName);    rows = sheet.getRows();    columns = sheet.getColumns();    // 为了返回值是Object[][],定义一个多行单列的二维数组    @SuppressWarnings("unchecked")HashMap<String, String>[][] arrmap = new HashMap[rows - 1][1];    // 对数组中所有元素hashmap进行初始化    if (rows > 1) {      for (int i = 0; i < rows - 1; i++) {        arrmap[i][0] = new HashMap<String, String>();      }    } else {      System.out.println("excel中没有数据");    }     // 获得首行的列名,作为hashmap的key值    for (int c = 0; c < columns; c++) {      String cellvalue = sheet.getCell(c, 0).getContents();      arrkey.add(cellvalue);    }    // 遍历所有的单元格的值添加到hashmap中    for (int r = 1; r < rows; r++) {      for (int c = 0; c < columns; c++) {        String cellvalue = sheet.getCell(c, r).getContents();        arrmap[r - 1][0].put(arrkey.get(c), cellvalue);      }    }    return arrmap;  }     public String getPath() throws IOException {    File directory = new File(".");    sourceFile = directory.getCanonicalPath() + "\\src\\source\\"        + fileName + ".xls";    return sourceFile;  }

实现对浏览器的调用,考虑到兼容性,需要同时满足对Chrome、FireFox、IE三大浏览器的调用,我们需要准备相关驱动chromedriver.exe、IEDriverServer.exe,这两驱动都是谷歌和IE官方提供的,可以从网上下载到;而FireFox不需要下载驱动,只要安装浏览器就可调用(Selenium和FireFox属于一个团队开发出来的,待遇就是不一样)。

有了浏览器驱动后(我们把驱动放到工程目录的WebDriver文件夹下,方便按相对路径统一调用),我们就需要一个能调用浏览器的类,以下提供核心代码样例:

public static WebDriver getChromeDriver(String url) {    //加载Google驱动  //System.setProperty("webdriver.chrome.driver","D:\\java\\chromedriver.exe");  System.setProperty("webdriver.chrome.driver",System.getProperties().getProperty("user.dir")+"\\WebDriver\\chromedriver.exe");  ChromeOptions options = new ChromeOptions();  //通过配置参数禁止data;的出现  options.addArguments("--user-data-dir="+System.getProperties().getProperty("user.home")+"/AppData/Local/Google/Chrome/User Data/Default");   //通过配置参数删除“您使用的是不受支持的命令行标记:--ignore-certificate-errors。稳定性和安全性会有所下降。”提示  options.addArguments("--start-maximized","allow-running-insecure-content", "--test-type");  WebDriver driver = new ChromeDriver(options);  driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);  driver.navigate().to(url);  return driver;}public static WebDriver getFireFoxDriver(String url){System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe");// TODO Auto-generated method stubWebDriver driver = new FirefoxDriver();  //Puts a Implicit wait, Will wait for 10 seconds before throwing exceptiondriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  //Launch websitedriver.navigate().to(url);return driver;}public static WebDriver getIEDriver(String url){//System.setProperty("webdriver.ie.driver", "D:\\java\\IE64\\IEDriverServer.exe");System.setProperty("webdriver.ie.driver", System.getProperties().getProperty("user.dir")+"\\WebDriver\\IE32\\IEDriverServer.exe");DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();    capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);    capabilities.setPlatfORM(Platform.windows);    capabilities.setCapability("silent", true);// TODO Auto-generated method stubWebDriver driver = new InternetExplorerDriver(capabilities);  //Puts a Implicit wait, Will wait for 10 seconds before throwing exceptiondriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  //Launch websitedriver.navigate().to(url);return driver;}

写一个以数据驱动的场景类,来进行单个事务的用例跑测

(1)首行我们需要用TesgNg提供的数据驱动方法(@DataProvider),来获取一个场景的用例表数据,这个场景从excel的第一个附表获取

如何在java中使用Selenium开发一个自动化测试框架

通过action名,调取用例表(用例表是以action名命名的附表),用例表如下所示(ExpectedObject表示用例校验对象的页面Element标签,用;分隔,分号前面的表示ID,分号后面的表示xpath):

如何在java中使用Selenium开发一个自动化测试框架

以下为用例表数据获取的代码:

@DataProvider(name="action")  public Object[][] Numbers() throws BiffException, IOException{getActionString = actionData.getActionStr(1);//获取第一个场景的broswer、url、action名ExcelData e=new ExcelData("testdata", getActionString.get(2));    return e.getExcelData();  }

然后通过Java的反射机制,实现动态的获取具体事务类和执行相关操作(每个事务的类名和方法名都与action场景名一致),以下截选相关场景的部分调用代码:

  @Test(dataProvider="action")  public void testAction(HashMap<String, String> data) throws BiffException, IOException {    try {    Class<?> MyClass = Class.forName(packageName+"."+getActionString.get(2));    Method method = MyClass.getMethod(getActionString.get(2),WebDriver.class);    @SuppressWarnings("unused")String [] results = (String []) method.invoke(null,driver);  String ExpObject=data.get("ExpectedObject");    String ExpObject_by=ExpObject.split(";")[0].toString();    String ExpObject_Desc=ExpObject.split(";")[1].toString();    if(ExpObject_by.length()>0){    Assert.assertEquals(driver.findElement(By.id(ExpObject_by)).getText(),data.get("ExpectedData"), getActionString.get(2)+data.get("ID")+"验证结果:");    }    else if(ExpObject_Desc.length()>0){    Assert.assertEquals(driver.findElement(By.xpath(ExpObject_Desc)).getText(),data.get("ExpectedData"), getActionString.get(2)+data.get("ID")+"验证结果:");    }      WebDriverDemo.WebSleep(500);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}  }

另外说明的是,调用浏览器的方法,需要明确是放在@BeforeMethod中,还是在@BeforeClass中,如果是登录校验测试,就要保证每次执行测试方法都要打开一次浏览器和关闭一次浏览器,那么我们就要把调用浏览器,和关闭浏览器的方法放到@BeforeMethod中和@AfterMethod中。其他业务测试,只要在一个套件类中打开一次浏览器和关闭一次浏览器就可以,所以用到的是@BeforeClass和@AfterClass。

我们需要再写一个以动作(关键词)驱动的场景类

同样,调用第二个场景的用例表,样例代码如下:

@DataProvider(name="action")  public Object[][] Numbers() throws BiffException, IOException{getActionString = actionData.getActionStr(2);//获取第二个场景的broswer、url、action名ExcelData e=new ExcelData("testdata", getActionString.get(2));    return e.getExcelData();  }

然后在测试方法中,动态的调用具体操作动作,获取WebElement标签的方法,包括通过By ID或者By xpath,操作动作以最常见的两个为例(sendKeys、click),以下为样例代码节选:

  @Test(dataProvider="action")  public void testAction(HashMap<String, String> data) throws BiffException, IOException {   //driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);//找不到element就再给5秒查找    try {    WebElement TestWebElement = null;    String SetObject=data.get("SetObject").trim();    String SetObject_by=SetObject.split(";")[0].toString();    String SetObject_Desc=SetObject.split(";")[1].toString();    if(SetObject_by.length()>0){    TestWebElement=driver.findElement(By.id(SetObject_by));    }    else if(SetObject_Desc.length()>0){    TestWebElement=driver.findElement(By.xpath(SetObject_Desc));    }    if(data.get("SetOperate").equals("sendKeys")){    TestWebElement.clear();     TestWebElement.sendKeys(data.get("SetValue"));    }else if(data.get("SetOperate").equals("click")){    TestWebElement.click();    }  String ExpObject=data.get("ExpectedObject").trim();    if(ExpObject.length()>0){    String ExpObject_by=ExpObject.split(";")[0].toString();      String ExpObject_Desc=ExpObject.split(";")[1].toString();    if(ExpObject_by.length()>0){      Assert.assertEquals(driver.findElement(By.id(ExpObject_by)).getText(),data.get("ExpectedData"), getActionString.get(2)+data.get("ID")+"验证结果:");      }      else if(ExpObject_Desc.length()>0){      Assert.assertEquals(driver.findElement(By.xpath(ExpObject_Desc)).getText(),data.get("ExpectedData"), getActionString.get(2)+data.get("ID")+"验证结果:");      }    }      WebDriverDemo.WebSleep(500);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}  }

这段方法所调用的用例表如下所示(以登录为例):

如何在java中使用Selenium开发一个自动化测试框架

剩下就是业务扩展类了,所有复杂的事务都可以单独建立测试类和方法(方便扩展维护,只需要在excel场景表中定义后就能调用,利用的是Java反射机制),在这里就不举例了。

四、实现测试套件调用和报告输出

有了以上步骤,一个可扩展的自动化框架已经基本形成,但是还达不到大规模应用测试和脚本方便可移植,这时候我们引入Ant(可以在Eclipse中安装插件,可以直接上网下载后引用),为了能输出漂亮一点的报告格式,我们还引入一个saxon-8.7.jar。

有了Ant后,我们就可以建议build.xml文件,就能一键bulid我们以上的自动化代码,并将执行测试后的结果输出成报告。

首先我们需要编辑好测试套件调用的testng.xml,简单举例如下:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "Http://testng.org/testng-1.0.dtd"> <suite name="Suite" parallel="false">  <test verbose="2" name="Test_Action">  <!--<groups>    <run>    <include name="aaa" />     <include name="bbb" />      <include name="ccc" />     </run>   </groups>-->  <classes>    <class name="TestBrowser.ExcActions"/>   <class name="TestBrowser.ExcActions2"/>   </classes>  </test> <!-- Default test --> </suite> <!-- Default suite -->

然后我们需要编辑好一个能引用基础jar包、build测试代码、调用testng、输出漂亮报告的build.xml文件

<?xml version="1.0" encoding="UTF-8"?> <project name= "TestAction" basedir= "." default="testoutput"><!--default设置为run表示只执行脚本,设为testoutput表示执行完脚本并输出视图报告--><echo message="import libs" /><property name= "lib.dir" value= "lib" /> <!--<property name="libdir" location="${basedir}/lib" />--><!--<property name="testng.output.dir" location="${basedir}/test-output" />--><path id= "test.classpath" > <!-- adding the saxon jar to your classpath --> <fileset dir= "${lib.dir}" includes= "*.jar" /> <fileset dir="${basedir}/selenium-2.44.0">  <include name="selenium-java-2.44.0.jar" />  <include name="libs/*.jar" /> </fileset> </path><taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="test.classpath" rel="external nofollow" /><target name="clean"><delete dir="build"/></target><target name="compile" depends="clean"><echo message="mkdir"/> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8" includeAntRuntime="false"><classpath refid="test.classpath"/></javac></target><path id="runpath"> <path refid="test.classpath"/> <pathelement location="build/classes"/> </path> <target name="run" depends="compile"><testng classpathref="runpath" rel="external nofollow"  outputDir="test-output"><xmlfileset dir="${basedir}" includes="testng.xml"/><JVMarg value="-ea" /></testng></target><target name= "testoutput" depends="run"><xslt in= "test-output/testng-results.xml" style= "test-output/testng-results.xsl"out= "test-output/index1.html" ><!-- you need to specify the directory here again --><param name= "testNgXslt.outputDir" expression= "${basedir}/test-output/" /><param name="testNgXslt.showRuntimeTotals" expression="true" /><classpath refid= "test.classpath" /></xslt></target> </project>

完成这些后,我们就可以通过Eclipse直接Run As Ant Build我们的自动化脚本了,输出一份还算漂亮的报告:

如何在java中使用Selenium开发一个自动化测试框架

同时,需要在事务操作类中,对实际结果和预期结果进行比较,并将测试结果写入excel的用例表中,如下:

String[] result=new String [2];result[0] = driver.findElement(By.xpath(pars.get(3).split(";")[1].toString())).getText();result[1] = pars.get(4);if(result[0].equals(result[1])){//pars.size()-1ActionsDemo.modifyExcel(Thread.currentThread().getStackTrace()[1].getMethodName(),k,5,"通过");} else {ActionsDemo.modifyExcel(Thread.currentThread().getStackTrace()[1].getMethodName(),k,5,"失败");}

如何在java中使用Selenium开发一个自动化测试框架

五、实现自动化框架脚本的迁移调用

以上的脚本始终是在Eclipse下编译和调用的,如果要实现灵活迁移,随便换任何一台只装了JDK的电脑都能运行,那么我们就要来点改造

首行是保证我们写的代码中,所以需要引用文件的地方,都用相对路径的方式,避免代码包迁移后需要改路径。

通过批处理调用build文件及用例文件,调用时也是通过批处理自动找到相关路径,避免用绝对路径。

需要用环境变量的地方,尽量用批处理的方式实现,甚至最好是不用配置环境变量,直接调用相引用相对命令文件的路径调用

以下举个通过bat批处理调用Ant来执行整个框架代码的build:

@echo off::先将测试用例文件拷到用户目录下copy src\source\testdata.xls %UserProfile%\src\source%cd%\org.apache.ant_1.9.6\bin\ant.bat -buildfile build.xmlecho 在%cd%\test-output下查看测试报告pause

六、进一步实现自动化的持续集成

在以上基础上,我们还可以通过jenkins实现对自动化脚本的调用,以及达到每日构建,持续集成开发的要求。

首先部署jenkins(网上有相关方法),由于本人公司一直在用jenkins,我就省了搭建部署这一步,直接将以上的自动化框架脚本上传

自动化脚本完整目录(包括代码、用例、lib、引用的jar、build.xml文件等)上传到SVN(再自动从SVN下到jenkins所在服务器

在jenkins中新建一个测试项目TestAction,主要配置如下:

如何在java中使用Selenium开发一个自动化测试框架

如何在java中使用Selenium开发一个自动化测试框架

配置完后,就可以立即构建(如果碰到相关报错问题,就按输出的提示进行处理),构建成功后,就可以在HTML_Report中看到测试结果:

如何在java中使用Selenium开发一个自动化测试框架

七、后续处理

到此为止,一个完整的Selenium自动化框架就出来了,要说好用不,不好说,还得经过实践的检验,但是以上这个思考过程和框架的演进过程,应该也是值得借鉴的,毕竟这是我这几天摸索和学习的过程,对于一个没有从事过自动化测试,而且没有做过Java开发的测试人员来说,这只是个开始。

目前来看,这个框架在架构分层上,还是不够清晰,有很多要改进的东西,从技术上来说,我已经实现了我的目标(学习自动化测试),但是在整体架构和代码重构上,还有很多工作没做,以下贴出一份Selenium自动化框架的分层结构,以便后期按照这个标准进行改进:

如何在java中使用Selenium开发一个自动化测试框架

测试数据层:独立封装数据;
页面对象层:封装页面对象,共页面任务层做调用;
页面任务层:实现各个独立页面的操作;
测试层:实现页面测试;
测试套件层:实现测试层的管理调用;

关于如何在java中使用Selenium开发一个自动化测试框架就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何在java中使用Selenium开发一个自动化测试框架

本文链接: https://www.lsjlt.com/news/248317.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在java中使用Selenium开发一个自动化测试框架
    这篇文章给大家介绍如何在java中使用Selenium开发一个自动化测试框架,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和...
    99+
    2023-06-06
  • Pytest自动化测试框架如何使用
    这篇文章主要讲解了“Pytest自动化测试框架如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Pytest自动化测试框架如何使用”吧!Pytest和Unittest测试框架的区别?如何...
    99+
    2023-07-05
  • PO模式在selenium自动化测试框架的优势
    PO模式简介 1.什么是PO模式 PO模型是:Page Object Model的简写 页面对象模型 作用:就是把测试页面和测试脚本进行分离,即把页面封装成类,供测试脚本进行调用; ...
    99+
    2024-04-02
  • C#中如何使用单元测试框架进行自动化测试
    C#中如何使用单元测试框架进行自动化测试引言:在软件开发过程中,自动化测试是一个非常重要的环节。通过编写和运行测试代码,可以帮助我们验证和确保代码的正确性和稳定性。在C#开发中,我们可以使用单元测试框架来实现自动化测试。本文将介绍C#中常用...
    99+
    2023-10-22
    自动化测试 C# 单元测试
  • Pytest自动化测试框架的使用
    目录Pytest和Unittest测试框架的区别?Pytest 安装Pytest 示例标记固件(Fixture)预处理和后处理作用域自动执行参数化总结Pytest和Unittest测...
    99+
    2023-03-19
    Pytest 自动化测试框架 Pytest 自动化
  • 如何使用python selenium实现自动化测试
    这篇文章主要介绍如何使用python selenium实现自动化测试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、安装selenium打开命令控制符输入:pip install -U selenium火狐浏览器安...
    99+
    2023-06-15
  • FAutoTest一个 H5、小程序自动化测试框架
    简介随着产品业务形态逐渐从 App 延升到微信小程序、微信公众号以及 QQ公众号等,而之前的自动化建设主要是 Native App 为主,全手工测试已无法满足快速增长的业务需求。为提升测试效率和质量,FAutoTest 框架致力于解决 QQ...
    99+
    2023-06-05
  • Java反射的应用场景:从框架开发到自动化测试
    Java反射是一种能够获取类、方法、字段及其属性的强大技术,在框架开发、自动化测试、逆向工程等场景中发挥着重要作用。 1. 框架开发 借助反射,您可以构建可扩展且灵活的软件框架。通过反射,您可以发现和加载类,创建类的实例,调用类的方法,...
    99+
    2024-02-09
    Java 反射 框架开发 自动化测试 逆向工程
  • 如何使用Selenium自动化测试SAP CRM WebClient UI
    这篇文章主要介绍了如何使用Selenium自动化测试SAP CRM WebClient UI,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。package com.x...
    99+
    2023-06-04
  • Python自动化测试框架之unittest使用详解
    目录1 unittest框架2 批量执行脚本2.1 构建测试套件2.2 用例的执行顺序2.3 忽略用例执行3 unittest断言4 HTML报告生成5 异常捕捉与错误截图6 数据驱...
    99+
    2023-05-18
    Python unittest Python 自动化测试框架 Python unittest框架
  • 浅谈基于Pytest框架的自动化测试开发实践
    目录01 — Pytest核心功能02 — 创建测试项目03 — 编写测试用例04 — 执行测试用例05 — 数据与脚本分离06 — 参数化07 — 测试配置管理08 — 测试的准备...
    99+
    2024-04-02
  • VBScript如何开发自动化测试脚本
    这篇文章将为大家详细讲解有关VBScript如何开发自动化测试脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 我在软件测试这个行业也是做过很多年了,自己的方向也是自动化测试,对VBScript脚本也算...
    99+
    2023-06-08
  • 如何使用开源测试工具RunnerGo做自动化测试
    以下是使用开源测试工具RunnerGo进行自动化测试的步骤:1. 安装RunnerGo:首先,需要从RunnerGo的官方网站(ht...
    99+
    2023-09-21
    RunnerGo
  • 如何处理PHP开发中的单元测试和自动化测试
    随着软件开发行业的日益发展,单元测试和自动化测试成为了开发者们重视的环节。PHP作为一种广泛应用于Web开发的脚本语言,单元测试和自动化测试同样也在PHP开发中扮演着重要的角色。本文将介绍如何处理PHP开发中的单元测试和自动化测试,并提供一...
    99+
    2023-10-21
    自动化测试 单元测试 PHP开发
  • pywinauto自动化测试如何使用
    这篇文章主要介绍“pywinauto自动化测试如何使用”,在日常操作中,相信很多人在pywinauto自动化测试如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”pywinauto自动化测试如何使用”的疑...
    99+
    2023-07-05
  • python如何进行自动化测试selenium核心技术处理弹框
    python如何进行自动化测试selenium核心技术处理弹框,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。页面上的弹框一般有三种:(1)alert:用来提示(2)confir...
    99+
    2023-06-25
  • 如何在Bash和Java开发中使用Laravel框架?
    Laravel框架是一个流行的PHP框架,它提供了许多有用的功能和工具,使得开发人员可以更加高效地进行Web应用程序的开发。虽然Laravel框架主要用于PHP开发,但是它也可以在Bash和Java开发中使用。在本文中,我们将探讨如何在Ba...
    99+
    2023-06-03
    bash 开发技术 laravel
  • 通过Go语言开发实现自动化测试的工具与框架
    通过Go语言开发实现自动化测试的工具与框架一、绪论随着软件开发的不断进步,自动化测试在保证软件质量和提高开发效率方面扮演着重要角色。而Go语言,作为一种简洁、高效、并发的编程语言,逐渐受到开发者们的喜爱。本文将介绍如何使用Go语言开发实现自...
    99+
    2023-11-20
    自动化测试 关键词:Go语言 工具与框架
  • NodeJs中如何使用Mocha测试框架
    这篇文章给大家介绍NodeJs中如何使用Mocha测试框架,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。下载代码后安装依赖:$ cd DemoOfMocha $&n...
    99+
    2024-04-02
  • Bash脚本中如何使用Java API实现自动化测试?
    自动化测试是软件开发中不可或缺的一环,它可以提高测试效率,降低测试成本,同时也可以保证软件质量。在自动化测试中,Bash脚本和Java API是两个非常重要的工具。本文将介绍如何在Bash脚本中使用Java API实现自动化测试。 一、B...
    99+
    2023-10-27
    api django bash
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作