• Selenium Video Tutorials

Selenium - 远程控制 (RC)



Selenium 是一款开源且可移植的自动化软件测试工具,用于测试 Web 应用程序。它能够跨不同的浏览器和操作系统运行。Selenium 不仅仅是一个工具,而是一套工具,可以帮助测试人员更有效地自动化基于 Web 的应用程序。Selenium 通常被称为 Selenium 工具套件。总共有四个工具,它们统称为 Selenium 组件。它们是:

  • Selenium IDE

  • Selenium RC

  • Selenium WebDriver

  • Selenium Grid

什么是 Selenium 远程控制?

Selenium 远程控制是 Selenium 套件的一部分,包含客户端库和一个默认情况下打开和关闭浏览器的服务器。它是一个用 Java 实现的服务器。它可以使用 HTTP 接受浏览器的命令。在当前版本的 Selenium 中,Selenium 远程控制已过时,已被 Selenium 弃用。

Selenium 远程控制中的自动化测试可以用任何编程语言开发,例如 Java、Python、C# 等。Selenium 远程控制可用于编写自动化测试来测试 Web 应用程序。Selenium 远程控制包含一个代理服务器,它允许浏览器像被测应用程序在代理服务器域中可用一样工作。要启动测试执行,我们首先必须创建一个 Selenium 远程控制服务器实例。

Selenium 远程控制 (RC) 是 Selenium 的主要项目,在 Selenium WebDriver (Selenium 2.0) 出现之前已经持续很长时间了。现在,Selenium 远程控制几乎不再使用,因为 WebDriver 提供了更强大的功能,但是用户仍然可以使用 Selenium 远程控制继续开发脚本。

它允许我们借助 Java、C#、Perl、Python 和 PHP 等编程语言的强大功能编写自动化的 Web 应用程序 UI 测试,以创建更复杂的测试,例如读取和写入文件、查询数据库以及发送电子邮件测试结果。

Selenium 远程控制的架构

Selenium 远程控制的架构如下图所示:

Selenium Remote Control

Selenium 远程控制的架构并不简单。为了在 Selenium 远程控制中触发测试,我们需要在系统中安装和设置远程控制服务器。它类似于 Web 浏览器和命令之间的桥梁。Selenium 远程控制服务器将 Selenium Core(一个 JavaScript 程序)放入浏览器中。之后,Selenium Core 根据测试以 JavaScript 命令的形式从 Selenium 远程控制服务器接收消息。浏览器执行从 Selenium Core 收到的命令,并将测试响应发送回服务器。

Selenium 服务器充当整个应用程序的中央处理器。它接收要执行的测试用例的脚本,解释命令并报告测试执行结果。RC 服务器绑定 Selenium Core 并自动将脚本注入浏览器。所有这些操作只有在测试程序使用客户端库 API 执行浏览器后才会执行。服务器通过接收通过 HTTP 网络以 GET 和 POST 操作类型传输的 Selenese 命令来工作,这使得我们可以使用任何编程语言将这些命令传递给服务器。

客户端库是编程语言特定的库,测试人员使用它们来创建测试脚本。这些库因语言而异。它们提供执行 Selenium 命令的函数。每个 Selenese 命令都有对应的函数已经定义。

Selenium 远程控制的局限性

Selenium 远程控制的局限性是由于其复杂的架构。此外,测试执行需要大量时间,性能也不尽如人意。这是因为 Selenium RC 将 JavaScript 命令作为浏览器的指令。无法使用 Selenium RC 实现无头执行,并且其 API 缺乏面向对象特性。

使用 Java 安装 Selenium 远程控制

安装 Selenium 远程控制之前的先决条件:

步骤 1 - 从以下链接下载并安装 Java:

https://www.oracle.com/java/technologies/downloads/.

要更详细地了解如何设置 Java,请参考以下链接:

https://www.youtube.com/watch?v=bxIZ1GVWYkQ.

成功安装 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>.

步骤 2 - 接下来,我们将通过运行以下命令来确认已安装的 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。

使用 Java 安装 Selenium 远程控制的方法如下:

步骤 1 - 从以下链接下载 Selenium Java 客户端:

https://www.seleniumcn.cn/downloads/.

步骤 2 - 解压 selenium-java 的 jar 文件。

步骤 3 - 安装任何代码编辑器,如 IntelliJ、Eclipse 等,来编写和运行 Selenium 测试。市场上有多种编辑器可用,例如:Eclipse、IntelliJ、Atom 等。使用这些编辑器,我们可以开始使用 Java 项目来启动我们的测试自动化。

要更详细地了解如何设置 IntelliJ,请参考以下链接:

https://tutorialspoint.com/selenium/intellij_selenium.htm.

步骤 4 - 在已安装的编辑器中创建一个 Java 项目。

步骤 5 − 将 selenium-java.jar 文件添加到类路径和引用中。

步骤 6 − 在 Java 中创建一个 Selenium 测试。

步骤 7 − 下载并解压 Java jar 文件 - selenium-server-standalone.jar 到某个位置。

步骤 8 − 导航到已解压 Java jar 文件 - selenium-server-standalone.jar 的位置。

步骤 9 − 在命令行中运行以下命令:

java -jar selenium-server-standalone-<version-number>.jar.

步骤 10 − 从编辑器或命令行执行在步骤 6 中开发的 Selenium 测试。

本教程全面介绍了 Selenium 远程控制 (RC)。我们首先介绍了什么是 Selenium 远程控制,Selenium 远程控制的架构是什么,Selenium 远程控制的局限性是什么,以及如何使用 Java 安装 Selenium 远程控制。

这使您能够深入了解 Selenium 远程控制 (RC)。建议您继续练习所学内容,并探索与 Selenium 相关的其他知识,以加深您的理解并拓宽您的视野。

广告