Java 中文官方教程 2022 版(十三)(3)

简介: Java 中文官方教程 2022 版(十三)

Java 中文官方教程 2022 版(十三)(2)https://developer.aliyun.com/article/1486365

附加资源

欲了解更多关于文件关联的信息,请参阅将文件与独立应用程序关联

欲了解关于 JavaFX Ant 参数的更多信息,请参阅JavaFX Ant 任务参考

添加外部库

原文:docs.oracle.com/javase/tutorial/deployment/selfContainedApps/addlibrary.html

自包含应用程序包含应用程序运行所需的一切。 如果您的应用程序需要外部库,则可以将该库添加到应用程序的包中。 添加库可以通过不同的方式完成。

使用文件关联中描述的文件关联演示在构建过程中下载 Groovy 库。 该库被放置在项目的/lib目录中供应用程序使用。 然后,该目录被复制到生成自包含应用程序包的/dist目录中。

build.xml文件中-pre-init任务中的以下代码显示了如何下载库:

<!-- download and copy groovy library -->
<copy toFile="lib/groovy-all-2.3.8.jar">
    <resources>
      <url url="http://central.maven.org/maven2/org/codehaus/groovy/groovy-all/2.3.8/groovy-all-2.3.8.jar"/>
    </resources>
</copy>

查看build.xml以获取完整的构建代码。

你可以从自包含应用示例下载文件关联演示的源文件。

提供默认参数

原文:docs.oracle.com/javase/tutorial/deployment/selfContainedApps/defaultarg.html

当启动应用程序时,参数会传递给 Java 应用程序。自包含应用程序可以设置一个默认参数,当未指定参数时使用。使用元素来定义参数。可以通过为每个参数添加一个元素来传递多个参数。有关此元素的信息,请参阅fx:argument。

在使用文件关联中描述的文件关联演示设置为使用打包在应用程序中的示例文件之一的名称作为默认参数。

build.xml文件中任务中的以下代码显示了如何定义默认参数:

<fx:application id="fileassociationdemo"
                name="File Association Demo"
                mainClass="${main.class}"
                version="1.0">
    <fx:argument>sample.js</fx:argument>
</fx:application>

查看build.xml以获取完整的构建代码。

您可以从自包含应用程序示例下载文件关联演示的源文件。

其他资源

有关默认参数的更多信息,请参阅向自包含应用程序传递参数

有关 JavaFX Ant 参数的更多信息,请参阅JavaFX Ant 任务参考

使用一个通用的构建文件适用于所有平台

原文:docs.oracle.com/javase/tutorial/deployment/selfContainedApps/commonbuild.html

要为应用程序在每个平台上生成一个自包含的应用程序包,必须在每个平台上运行打包工具。您可以选择使用特定于平台的构建文件或设置一个可以在所有平台上运行的构建文件。特定于平台的文件可能更容易设置,但您必须维护多个文件。

使用文件关联中描述的文件关联演示使用一个可以在所有平台上运行的单个构建文件。

构建文件的以下元素支持其在所有平台上的使用:

  • 应用程序的主类为ScriptRunnerApplication.java,用于 Linux 和 Windows,以及ScriptRunnerApplicationMac.java,用于 OS X。在-pre-init任务中的以下代码用于确定使用哪个类:
<condition property="main.class" 
           value="sample.fa.ScriptRunnerApplication"
           else="sample.fa.ScriptRunnerApplicationMac">
    <not><os family="mac"/></not>
</condition>
  • -pre-init任务中的以下代码用于防止在 Linux 或 Windows 上运行时编译 OS X 的主类:
<condition property="excludes" value="**/*Mac.java">
    <not><os family="mac"/></not>
</condition>
  • 元素用于向不同的打包程序传递参数。未被打包程序使用的参数将被忽略,因此构建文件可以包含所有平台所需的参数。以下代码定义了 Linux、OS X 和 Windows 的参数:
<fx:bundleArgument arg="classpath" value="FileAssociationsDemo.jar lib/groovy-all-2.3.8.jar"/>
<fx:bundleArgument arg="win.exe.systemWide" value="true"/>
<fx:bundleArgument arg="linux.bundleName" value="file-association-demo"/>
<fx:bundleArgument arg="email" value="maintainer@example.com"/>
<fx:bundleArgument arg="mac.CFBundleName" value="File Assoc Demo"/>
<fx:bundleArgument arg="win.menuGroup" value="Java Demos"/>

请查看build.xml以获取完整的构建代码。

您可以从自包含应用程序示例下载文件关联演示的源文件。

使用多个入口点

原文:docs.oracle.com/javase/tutorial/deployment/selfContainedApps/multiplelaunchers.html

当您有一组相关的应用程序希望用户部署时,自包含应用程序非常有用。自包含应用程序提供一个单独的可安装捆绑包,安装所有应用程序和运行它们所需的 JRE。

多个启动器演示包括转换现有应用程序中描述的动态树演示和使用文件关联中描述的文件关联演示。项目的/src目录包含两个应用程序的源文件。

您可以从自包含应用程序示例下载多个启动器演示的源文件。

自包含应用程序的主要入口点由元素的mainClass属性标识。在多个启动器演示中,主要入口点是文件关联演示。主类为 Linux 和 Windows 的sample.fa.ScriptRunnerAppliation,或者 OS X 的sample.fa.ScriptRunnerApplicationMac。有关在跨平台使用单个构建文件时确定要使用的类的信息,请参见为所有平台使用通用构建文件。

每个次要入口点由元素的一个实例标识。有关此元素的信息,请参见fx:secondaryLauncher。

在多个启动器演示中,次要入口点是动态树演示。build.xml文件中的以下代码显示了如何定义第二个入口点:

<fx:secondaryLauncher name="Dynamic Tree Demo"
    mainClass="webstartComponentArch.DynamicTreeApplication"
    version="1.0"
    title="Dynamic Tree Demo"
    vendor="My Company"
    description="A Demo of Multiple Launchers for JavaPackager"
    copyright="(c) 2014 My Company"
     menu="true"
     shortcut="false"
     >
</fx:secondaryLauncher>

请查看build.xml以获取完整的构建代码。

要为多个启动器演示生成可安装的捆绑包,请参见转换现有应用程序中的“生成捆绑包”部分。

当您安装自包含应用程序时,将安装具有多个启动器入口点的文件关联演示和具有自己入口点的动态树演示。例如,在 Windows 上,开始菜单中的Java Demos文件夹包含两个条目:动态树演示和多个启动器演示。请注意,为多个启动器入口点设置了文件关联,因此打开 JavaScript 或 Groovy 文件会启动多个启动器。

附加资源

有关多个入口点的更多信息,请参见支持多个入口点

关于 JavaFX Ant 参数的更多信息,请参阅JavaFX Ant 任务参考

问题和练习:自包含应用程序

docs.oracle.com/javase/tutorial/deployment/selfContainedApps/QandE/questions.html

问题

  1. 以下哪一项不是自包含应用程序的优势?
  1. 用户使用他们熟悉的安装程序安装应用程序。
  2. 该应用程序作为本机应用程序运行。
  3. 该应用程序在用户机器上需要更少的空间。
  4. 您可以控制应用程序使用的 JRE 版本。
  5. 该应用程序不需要浏览器来运行。
  1. 真或假:MIME 类型必须始终用于设置文件关联。
  2. 用于识别 Ant 任务中自包含应用程序的入口点的元素是什么?

练习

  1. 编写 Ant 任务,为名为“我的示例应用程序”的简单应用程序生成 Windows MSI 捆绑包。应用程序的 JAR 文件位于dist目录中,主类为samples.MyApp,输出文件将写入当前目录。
  2. 加强上一个练习中的代码,为所有 Windows 安装程序创建捆绑包,并为文本文件定义文件关联。

检查你的答案。

教程:在 JAR 文件中打包程序

原文:docs.oracle.com/javase/tutorial/deployment/jar/index.html

Java™ 存档(JAR)文件格式使您能够将多个文件打包到单个存档文件中。通常,JAR 文件包含与小程序和应用程序相关的类文件和辅助资源。

JAR 文件格式提供了许多好处:

  • 安全性:您可以对 JAR 文件的内容进行数字签名。识别您签名的用户可以选择授予您的软件安全权限,否则软件将无法获得这些权限。
  • 减少下载时间:如果您的小程序打包在 JAR 文件中,小程序的类文件和相关资源可以在单个 HTTP 事务中下载到浏览器,而无需为每个文件打开新连接。
  • 压缩:JAR 格式允许您压缩文件以实现高效存储。
  • 为扩展打包:扩展框架提供了一种方式,您可以通过该方式向 Java 核心平台添加功能,而 JAR 文件格式定义了扩展的打包方式。通过使用 JAR 文件格式,您也可以将您的软件转换为扩展。
  • 软件包封装:存储在 JAR 文件中的软件包可以选择性地封装,以便软件包可以强制执行版本一致性。在 JAR 文件中封装软件包意味着该软件包中定义的所有类必须在同一个 JAR 文件中找到。
  • 软件包版本控制:JAR 文件可以保存有关其包含的文件的数据,例如供应商和版本信息。
  • 可移植性:处理 JAR 文件的机制是 Java 平台核心 API 的标准部分。

本课程分为四个部分:

使用 JAR 文件:基础知识

本节向您展示如何执行基本的 JAR 文件操作,以及如何运行打包在 JAR 文件中的软件。

使用清单文件:基础知识

本节介绍清单文件以及如何自定义它们,以便您可以执行诸如封装软件包和设置应用程序入口点等操作。

签名和验证 JAR 文件

本节向您展示如何对 JAR 文件进行数字签名并验证已签名的 JAR 文件的签名。

使用与 JAR 相关的 API

本节向您介绍了 Java 平台的一些 JAR 处理功能。JAR 文件格式是 Java 平台扩展机制的重要部分。您可以在本教程的 扩展机制 部分了解有关 JAR 文件这一方面的更多信息。

问题和练习:JAR

测试您对 JAR 的了解。

其他参考资料

Java 开发工具包(JDK)的文档包括有关 Jar 工具的信息:

使用 JAR 文件:基础知识

原文:docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html

JAR 文件使用 ZIP 文件格式打包,因此您可以将它们用于诸如无损数据压缩、存档、解压缩和存档解包等任务。这些任务是 JAR 文件的最常见用途之一,您可以仅使用这些基本功能实现许多 JAR 文件的好处。

即使您想利用 JAR 文件格式提供的高级功能,如电子签名,您也需要首先熟悉基本操作。

要执行 JAR 文件的基本任务,您需要使用作为 Java 开发工具包(JDK)的一部分提供的 Java 存档工具。因为 Java 存档工具是通过使用jar命令调用的,所以本教程将其称为“Jar 工具”。

作为本节将涵盖的一些主题的概要和预览,以下表格总结了常见的 JAR 文件操作:

常见的 JAR 文件操作

操作 命令
创建 JAR 文件 jar cf *jar-file input-file(s)*
查看 JAR 文件的内容 jar tf *jar-file*
提取 JAR 文件的内容 jar xf *jar-file*
从 JAR 文件中提取特定文件 jar xf *jar-file archived-file(s)*
运行打包为 JAR 文件的应用程序(需要Main-class清单头) java -jar *app.jar*
调用打包为 JAR 文件的小程序
<applet code=*AppletClassName.class*
        archive="*JarFileName.jar*"
        width=*width* height=*height*>
</applet>

|

本节向您展示如何执行最常见的 JAR 文件操作,并为每个基本功能提供示例:

创建 JAR 文件

本节向您展示如何使用 Jar 工具将文件和目录打包成 JAR 文件。

查看 JAR 文件的内容

您可以显示 JAR 文件的目录以查看其包含的内容,而无需实际解压 JAR 文件。

提取 JAR 文件的内容

您可以使用 Jar 工具来解压缩 JAR 文件。在提取文件时,Jar 工具会复制所需文件并将其写入当前目录,重现文件在存档中的目录结构。

更新 JAR 文件

本节向您展示如何通过修改其清单或添加文件来更新现有 JAR 文件的内容。

运行打包为 JAR 的软件

本节向您展示如何调用和运行打包在 JAR 文件中的小程序和应用程序。

附加参考

JDK 的文档包括 Jar 工具的参考页面:

创建 JAR 文件

原文:docs.oracle.com/javase/tutorial/deployment/jar/build.html

创建 JAR 文件的基本命令格式为:

jar cf *jar-file input-file(s)*

此命令中使用的选项和参数为:

  • c选项表示您要创建一个 JAR 文件。
  • f选项表示您希望输出到一个文件而不是到stdout
  • jar-file是您希望生成的 JAR 文件的名称。您可以为 JAR 文件使用任何文件名。按照惯例,JAR 文件名应该使用.jar扩展名,尽管这不是必需的。
  • input-file(s)参数是一个以空格分隔的一个或多个要包含在 JAR 文件中的文件列表。input-file(s)参数可以包含通配符*符号。如果任何"input-files"是目录,则这些目录的内容将递归添加到 JAR 存档中。

cf选项可以以任意顺序出现,但它们之间不能有任何空格。

此命令将生成一个压缩的 JAR 文件并将其放置在当前目录中。该命令还将为 JAR 存档生成一个默认清单文件。


注意:

JAR 文件中的元数据,如条目名称、注释和清单内容,必须以 UTF8 编码。


您可以将任何这些附加选项添加到基本命令的cf选项中:

jar 命令选项

选项 描述
v 在构建 JAR 文件时在stdout上产生详细输出。详细输出会告诉您每个文件被添加到 JAR 文件时的名称。
0 (zero) 表示您不希望压缩 JAR 文件。
M 表示不应生成默认清单文件。

| m | 用于从现有清单文件中包含清单信息。使用此选项的格式为:

jar cmf *jar-file* *existing-manifest* *input-file(s)*

有关此选项的更多信息,请参阅修改清单文件。


警告: 清单必须以新行或回车符结束。如果最后一行没有以新行或回车符结束,则最后一行将无法正确解析。


|

-C 在执行命令期间更改目录。请参见下面的示例。

注意:

当您创建一个 JAR 文件时,创建时间将被存储在 JAR 文件中。因此,即使 JAR 文件的内容没有更改,当您多次创建 JAR 文件时,生成的文件也不完全相同。在构建环境中使用 JAR 文件时,您应该注意这一点。建议您在清单文件中使用版本信息来控制 JAR 文件的版本,而不是使用创建时间。请参阅设置包版本信息部分。


一个示例

让我们看一个例子。一个简单的 TicTacToe 小程序。你可以通过从Java SE Downloads下载 JDK Demos and Samples 包来查看这个小程序的源代码。这个演示包含有这种结构的类文件、音频文件和图像文件:

TicTacToe 文件夹层次结构

audioimages 子目录包含小程序使用的声音文件和 GIF 图像。

当你在线下载整个教程时,你可以从 jar/examples 目录获取所有这些文件。要将这个演示打包成一个名为 TicTacToe.jar 的单个 JAR 文件,你可以在 TicTacToe 目录内运行以下命令:

jar cvf TicTacToe.jar TicTacToe.class audio images

audioimages 参数表示目录,因此 Jar 工具将递归地将它们及其内容放入 JAR 文件中。生成的 JAR 文件 TicTacToe.jar 将放置在当前目录中。因为命令使用了 v 选项进行详细输出,当你运行命令时,你会看到类似于以下输出:

adding: TicTacToe.class (in=3825) (out=2222) (deflated 41%)
adding: audio/ (in=0) (out=0) (stored 0%)
adding: audio/beep.au (in=4032) (out=3572) (deflated 11%)
adding: audio/ding.au (in=2566) (out=2055) (deflated 19%)
adding: audio/return.au (in=6558) (out=4401) (deflated 32%)
adding: audio/yahoo1.au (in=7834) (out=6985) (deflated 10%)
adding: audio/yahoo2.au (in=7463) (out=4607) (deflated 38%)
adding: images/ (in=0) (out=0) (stored 0%)
adding: images/cross.gif (in=157) (out=160) (deflated -1%)
adding: images/not.gif (in=158) (out=161) (deflated -1%)

从这个输出中可以看出,JAR 文件 TicTacToe.jar 已经被压缩。Jar 工具默认会压缩文件。你可以通过使用 0(零)选项关闭压缩功能,使得命令看起来像这样:

jar cvf0 TicTacToe.jar TicTacToe.class audio images

你可能希望避免压缩,例如,为了增加浏览器加载 JAR 文件的速度。未压缩的 JAR 文件通常比压缩文件加载更快,因为加载过程中无需解压文件。然而,存在一个权衡,即较大的未压缩文件可能在网络下载时需要更长的时间。

Jar 工具将接受使用通配符 * 符号的参数。只要在 TicTacToe 目录中没有不需要的文件,你可以使用以下替代命令来构建 JAR 文件:

jar cvf TicTacToe.jar *

尽管详细输出没有显示,Jar 工具会自动向 JAR 存档中添加一个路径名为 META-INF/MANIFEST.MF 的清单文件。有关清单文件的信息,请参阅使用清单文件:基础知识部分。

在上面的例子中,存档中的文件保留了它们的相对路径名和目录结构。Jar 工具提供了 -C 选项,你可以使用它来创建一个 JAR 文件,其中存档文件的相对路径不会被保留。它是模仿 TAR 的 -C 选项。

举个例子,假设你想将 TicTacToe 演示中使用的音频文件和 gif 图像放入一个 JAR 文件中,并且你希望所有文件都位于顶层,没有目录结构。你可以通过在 imagesaudio 目录的父目录中执行以下命令来实现:

jar cf ImageAudio.jar -C images . -C audio .

这个命令中的-C images部分指示 Jar 工具进入images目录,而跟在-C images后面的.则指示 Jar 工具归档该目录的所有内容。命令中的-C audio .部分则对audio目录执行相同操作。生成的 JAR 文件将具有以下目录结构:

META-INF/MANIFEST.MF
cross.gif
not.gif
beep.au
ding.au
return.au
yahoo1.au
yahoo2.au

相比之下,假设您使用了一个不使用-C选项的命令:

jar cf ImageAudio.jar images audio

生成的 JAR 文件将具有以下目录结构:

META-INF/MANIFEST.MF
images/cross.gif
images/not.gif
audio/beep.au
audio/ding.au
audio/return.au
audio/yahoo1.au
audio/yahoo2.au

查看 JAR 文件的内容

原文:docs.oracle.com/javase/tutorial/deployment/jar/view.html

查看 JAR 文件内容的基本命令格式为:

jar tf *jar-file*

让我们看看此命令中使用的选项和参数:

  • t 选项表示您想查看 JAR 文件的目录
  • f 选项表示要查看其内容的 JAR 文件在命令行上指定。
  • jar-file 参数是您想要查看其内容的 JAR 文件的路径和名称。

tf 选项可以以任意顺序出现,但它们之间不能有任何空格。

此命令将 JAR 文件的目录显示到 stdout

您可以选择添加详细选项 v,以在输出中生成有关文件大小和最后修改日期的附加信息。

一个示例

让我们使用 Jar 工具列出我们在上一节中创建的 TicTacToe.jar 文件的内容:

jar tf TicTacToe.jar

此命令将 JAR 文件的内容显示到 stdout

META-INF/MANIFEST.MF
TicTacToe.class
audio/
audio/beep.au
audio/ding.au
audio/return.au
audio/yahoo1.au
audio/yahoo2.au
images/
images/cross.gif
images/not.gif

JAR 文件包含了 TicTacToe 类文件以及音频和图像目录,正如预期的那样。 输出还显示 JAR 文件包含一个默认清单文件 META-INF/MANIFEST.MF,该文件是由 JAR 工具自动放置在存档中的。 有关更多信息,请参阅理解默认清单部分。

所有路径名都显示为正斜杠,无论您使用的是哪个平台或操作系统。 JAR 文件中的路径始终是相对的;例如,您永远不会看到以 C: 开头的路径。

如果使用 v 选项,JAR 工具将显示附加信息:

jar tvf TicTacToe.jar

Java 中文官方教程 2022 版(十三)(4)https://developer.aliyun.com/article/1486367

相关文章
|
4天前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
21 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
9天前
|
存储 网络协议 Oracle
java教程
java教程【8月更文挑战第11天】
14 5
|
1月前
|
SQL 安全 Java
「滚雪球学Java」教程导航帖(更新2024.07.16)
《滚雪球学Spring Boot》是一个面向初学者的Spring Boot教程,旨在帮助读者快速入门Spring Boot开发。本专通过深入浅出的方式,将Spring Boot开发中的核心概念、基础知识、实战技巧等内容系统地讲解,同时还提供了大量实际的案例,让读者能够快速掌握实用的Spring Boot开发技能。本书的特点在于注重实践,通过实例学习的方式激发读者的学习兴趣和动力,并引导读者逐步掌握Spring Boot开发的实际应用。
42 1
「滚雪球学Java」教程导航帖(更新2024.07.16)
WXM
|
25天前
|
Oracle Java 关系型数据库
Java JDK下载安装及环境配置超详细图文教程
Java JDK下载安装及环境配置超详细图文教程
WXM
129 3
|
1月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
44 2
|
1月前
|
Web App开发 XML Java
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
【7月更文挑战第14天】这篇教程介绍了如何使用Java和Selenium构建一个支持跨浏览器测试的自动化测试框架。设计的核心是通过读取配置文件来切换不同浏览器执行测试用例。配置文件中定义了浏览器类型(如Firefox、Chrome)和测试服务器的URL。代码包括一个`BrowserEngine`类,它初始化配置数据,根据配置启动指定的浏览器,并提供关闭浏览器的方法。测试脚本`TestLaunchBrowser`使用`BrowserEngine`来启动浏览器并执行测试。整个框架允许在不同浏览器上运行相同的测试,以确保兼容性和一致性。
47 3
|
1月前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
136 5
|
1月前
|
Java 数据安全/隐私保护
Java无模版导出Excel 0基础教程
经常写数据导出到EXCEL,没有模板的情况下使用POI技术。以此作为记录,以后方便使用。 2 工具类 样式工具: 处理工具Java接口 水印工具 导出Excel工具类 3 测试代码 与实际复杂业务不同 在此我们只做模拟 Controller Service 4 导出测试 使用Postman进行接口测试,没接触过Postman的小伙伴可以看我这篇博客Postman导出excel文件保存为文件可以看到导出很成功,包括水印 sheet页名称自适应宽度。还有一些高亮……等功能可以直接搜索使用
Java无模版导出Excel 0基础教程
|
1月前
|
设计模式 测试技术 Python
《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
【7月更文挑战第10天】Page Object Model (POM)是Selenium自动化测试中的设计模式,用于提高代码的可读性和维护性。POM将每个页面表示为一个类,封装元素定位和交互操作,使得测试脚本与页面元素分离。当页面元素改变时,只需更新对应页面类,减少了脚本的重复工作和维护复杂度,有利于团队协作。POM通过创建页面对象,管理页面元素集合,将业务逻辑与元素定位解耦合,增强了代码的复用性。示例展示了不使用POM时,脚本直接混杂了元素定位和业务逻辑,而POM则能解决这一问题。
43 6
|
1月前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
【7月更文挑战第12天】在本文中,作者宏哥介绍了如何在不使用PageFactory的情况下,用Java和Selenium实现Page Object Model (POM)。文章通过一个百度首页登录的实战例子来说明。首先,创建了一个名为`BaiduHomePage1`的页面对象类,其中包含了页面元素的定位和相关操作方法。接着,创建了测试类`TestWithPOM1`,在测试类中初始化WebDriver,设置驱动路径,最大化窗口,并调用页面对象类的方法进行登录操作。这样,测试脚本保持简洁,遵循了POM模式的高可读性和可维护性原则。
27 2