Selenium 简明教程
Selenium - Environment Setup
Selenium Webdriver 可用于对 Web 应用程序进行测试自动化。Selenium 可与多种语言一起使用,例如 Java、Python、Ruby 等。
我们来讨论一下如何使用 Java 配置 Selenium 环境。Selenium 安装可以通过以下步骤实现:
Step 1 −我们需要在本地系统中下载并安装 Java。这可以通过访问下方链接来完成:
要深入了解如何设置 Java,我们可以参考下面的链接:
在成功安装了 Java 之后,我们可以通过从命令提示符运行以下命令 java 来确认其安装。
C:\java
它将在屏幕上显示以下信息 −
Usage: java [options] <mainclass> [args...]
(to execute a class)
or java [options] -jar <jarfile> [args...]
(to execute a jar file)
or java [options] -m <module>[/<mainclass>] [args...]
java [options] --module <module>[/<mainclass>] [args...]
(to execute the main class in a module)
or java [options] <sourcefile> [args]
(to execute a single source-file program)
Arguments following the main class, source file, -jar <jarfile>,
-m or --module <module>/<mainclass> are passed as the arguments to
main class.
where options include:
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
--class-path <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-p <module path>
--module-path <module path>...
A ; separated list of directories, each directory
is a directory of modules.
--upgrade-module-path <module path>...
A ; separated list of directories, each directory
is a directory of modules that replace upgradeable
modules in the runtime image
--add-modules <module name>[,<module name>...]
root modules to resolve in addition to the initial module.
<module name> can also be ALL-DEFAULT, ALL-SYSTEM,
ALL-MODULE-PATH.
--enable-native-access <module name>[,<module name>...]
modules that are permitted to perform restricted native operations.
<module name> can also be ALL-UNNAMED.
--list-modules
list observable modules and exit
-d <module name>
--describe-module <module name>
describe a module and exit
--dry-run create VM and load main class but do not execute main method.
The --dry-run option may be useful for validating the
command-line options such as the module system configuration.
--validate-modules
validate all modules and exit
The --validate-modules option may be useful for finding
conflicts and other errors with modules on the module path.
-D<name>=<value>
set a system property
-verbose:[class|module|gc|jni]
enable verbose output for the given subsystem
-version print product version to the error stream and exit
--version print product version to the output stream and exit
-showversion print product version to the error stream and continue
--show-version
print product version to the output stream and continue
--show-module-resolution
show module resolution output during startup
-? -h -help
print this help message to the error stream
--help print this help message to the output stream
-X print help on extra options to the error stream
--help-extra print help on extra options to the output stream
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions with specified granularity
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions with specified granularity
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:jdwp
see also -agentlib:jdwp=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
HiDPI scaled images are automatically supported and used
if available. The unscaled image filename, e.g. image.ext,
should always be passed as the argument to the -splash option.
The most appropriate scaled image provided will be picked up
automatically.
See the SplashScreen API documentation for more information
@argument files
one or more argument files containing options
--disable-@files
prevent further argument file expansion
--enable-preview
allow classes to depend on preview features of this release
To specify an argument for a long option, you can use --<name>=<value> or
--<name> <value>.
接下来,我们将通过运行以下命令来确认已安装的 Java 版本:
java –version
它将显示以下输出 −
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment Homebrew (build 17.0.9+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.9+0, mixed mode, sharing)
执行的命令的输出表示系统中安装的 Java 版本是 17.0.9。
我们还需要使用以下链接在系统中安装 Maven:
要深入了解如何设置 Maven,我们可以参考下面的链接:
接下来,我们将通过运行以下命令确认已安装的 Maven 版本:
mvn –version
它将显示以下输出 −
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /opt/homebrew/Cellar/maven/3.9.6/libexec
Java version: 21.0.1, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk/21.0.1/libexec/openjdk.jdk/Contents/Home
Default locale: en_IN, platform encoding: UTF-8
OS name: "mac os x", version: "14.0", arch: "aarch64", family: "mac"
所执行命令的输出表示系统中所安装的 Maven 版本是 Apache Maven 3.9.6。
Step 2 - 接下来的工作是,我们将安装 IntelliJ 编辑器来运行 Selenium 测试。市场上有多种编辑器,例如:Eclipse、IntelliJ、Atom 等。使用这些编辑器,我们可以开始对 Java 项目进行操作,以启动我们的测试自动化工作。今天,我们将讨论如何在 IntelliJ 中设置 Selenium 代码。
要安装 IntelliJ,应安装最新版本的 Java。
让我们开始——
Step 1 - 使用以下链接导航到 IntelliJ(Jetbrains 的产品)的官方网站,然后单击下载 -
Step 2 - 一旦导航到下一页,我们将获得在各种操作系统(如 Windows、macOS 和 Linux)中下载 IntelliJ 的选项。基于你当前在系统中使用的操作系统,单击选项卡。
IntelliJ 有两个版本,付费版和社区版(免费)。
我们将下载社区版本。为此,我们将导航到 IntelliJ IDEA Community Edition 部分,然后单击下载。
下载在 macOS 中完成后,我们将 IntelliJ IDEA CE 文件从下载文件夹拖到应用程序文件夹。
Step 3 - IntelliJ 徽标将显示几秒钟,接下来将出现 JETBRAINS COMMUNITY EDITION TERMS。单击复选框以接受条款和条件,然后单击继续。
Step 4 - 欢迎使用 IntelliJ IDEA 应出现。单击新建项目按钮。
Step 5 - 在名称:字段下输入一个名称。选择语言为 Java,构建系统为 Maven 和 JDK 版本,然后单击创建。
Step 6 - 输入一个 ArtifactId 并单击创建。
Step 7 - IntelliJ 编辑器的安装应成功完成。
Step 8 -接下来,我们将从以下链接添加 Selenium Maven 依赖项——
Step 9 − 在中心选项卡下选择并单击版本链接。我们导航到 Selenium Java> ><version> 页面。复制 Maven 选项卡下的依赖项。
依赖示例 −
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.11.0</version>
</dependency>
Step 10 − 将步骤 9 中复制的依赖项粘贴到 pom.xml 文件中(可在 IntelliJ 工作区中创建的 Maven 项目下找到)。
Step 11 − 在 Main.java 文件中添加以下代码。
Example
Main.java 类文件上的代码实现 −
package org.example;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) throws InterruptedException {
// Initiate the Webdriver
WebDriver driver = new ChromeDriver();
// adding implicit wait of 15 secs
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
// URL launch
driver.get("https://www.google.com");
// get browser title after browser launch
System.out.println("Browser title: " + driver.getTitle());
}
}
在 pom.xml 文件中添加的依赖项:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>SeleniumJava</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.11.0</version>
</dependency>
</dependencies>
</project>
Step 11 − 右键单击并选择 “运行 ‘Main.main()’ ” 选项。等到运行完成。
Step 12 − Chrome 浏览器已启动,且我们在控制台中获取了输出 − Browser Title: Google 消息为 “流程已完成,退出代码为 0”,表示代码已成功执行。
Output
Browser title: Google
Process finished with exit code 0
同时启动 Chrome 浏览器,并顶部显示了消息 Chrome is being controlled by automated test software 。
要获取有关如何设置 Eclipse 的更详细视图,我们可以参考以下链接 −
Selenium 也可以使用 Python 配置,为此我们需要 PyCharm 编辑器。要获取有关如何设置 PyCharm 的更详细视图,我们可以参考以下链接 −
让我们再举一个例子,在该示例中,我们将启动浏览器并打开应用程序,最后退出浏览器。
Example
MainBrowserQuit.java 类文件中的代码实现。
package org.example;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class MainBrowserQuit {
public static void main(String[] args) throws InterruptedException {
// Initiate the Webdriver
WebDriver driver = new ChromeDriver();
// adding implicit wait of 15 secs
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
// URL launch and get the browser title
driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php");
System.out.println( "Browser title after launch: " + driver.getTitle());
// close browser
driver.quit();
}
}
Output
Browser title after launch: Selenium Practice - Student Registration Form
Process finished with exit code 0
在前一个示例中,我们首先启动了 Chrome 浏览器,然后检索了浏览器标题,之后退出了浏览器,在控制台中接收到了消息 − Browser title after launch: Selenium Practice - Student Registration Form 。
最后,收到了消息 Process finished with exit code 0 ,表示代码成功执行。
因此,我们已在本教程中成功完成了 Selenium 的环境设置。