章节目录:

前言

SOAtest 使用 Selenium WebDriver 进行 web 测试。Selenium WebDriver 可直接调用浏览器的 WebDriver,充分利用浏览器对自动化的原生支持。SOAtest 2020.1 及更早版本还配备了 Parasoft 旧版引擎,该引擎支持 Parasoft 专用实现,用于回放浏览器场景。旧版 Parasoft 引擎已在 SOAtest、Virtualize 和 CTP 2020.2 版本移除。如果您基于旧版本的 SOAtest 升级,那么在多数情况下,使用 Parasoft 旧版引擎录制和配置的用于回放的 web 场景仍可正常工作。不过,一些测试可能会失败,因此需要进行更新。主题提供了有关基于使用旧版 Parasoft 引擎的 SOAtest 版本升级后使用 Selenium WebDriver 引擎的信息。

升级注意事项

该部分介绍与使用 Selenium WebDriver 引擎相关的更改。    

常规注意事项

已弃用的浏览器命令 

下列命令可在 Parasoft 旧版引擎中使用,但已被 Selenium WebDriver 取代或已被弃用。

旧版命令替换命令

Fireevent

Mousedown

Mousemove

Mouseover

Mouseup

Type (Without Focus)

Type Password (Without Focus)

不适用 - Selenium WebDriver 使用原生事件来模拟用户行为。

Keydown

Keypress

Keyup

仅支持 SHIFT、CONTROL 和 ALT 文本输入值。没有必要使用其他键修饰符。

New Browser

不适用 - 不支持在回放过程中启动第二个浏览器。
Other不适用 - 不支持使用 Other 和 UserCustomizableOptions.js 编写自定义命令。

与隐藏元素交互

旧版引擎能够与隐藏元素交互。而 Selenium WebDriver 引擎则尝试模拟真实用户,只与可见元素进行交互。如果您的旧场景与隐藏元素交互,请添加中间步骤以显示隐藏元素,这样您就可以成功运行带有隐藏元素的场景。最常见的方法是点击一个元素,使隐藏的元素变得可见。

例如,“无法执行用户操作:元素当前不可见”之类的错误信息可能表明需要进行迁移(也可能表明应用程序行为不符合预期)。 

使用相对 URL 的验证

旧版引擎在验证 hrefsrc 属性时会提取相对路径。Selenium WebDriver 引擎则提取绝对路径。例如,假设您的 http://localhost:8080 域上存在包含 <a href=”xyz.html”>  的浏览器内容。验证结果将为 http://localhost:8080/sample/xyz.html(绝对路径)。

例如““href”属性验证失败:在‘http://localhost:8080/sample/xyz.html’页面上发现的实际值必须等于预期值‘xyz.html’”表明需要进行迁移。 

如果收到此消息,请更新预期值,例如:

脚本对话框操作

不支持以下操作:

使用以下等效 Selenium 命令执行相同的操作:

已知的 Selenium Bug 和问题

已知的 Safari 问题

手动升级到 Selenium WebDriver 新版本

您可以在 SOAtest 新版本发布之前升级 SOAtest 的 Selenium WebDriver 版本如果改用与 SOAtest 随附版本不同的 Selenium WebDriver 版本,由于Parasoft 未提供官方支持或进行测试,在运行较新版本的 Selenium WebDriver 时可能会遇到不兼容的问题。

要进行升级,您需要:

  1. 升级 Selenium 客户端,同时升级 Firefox 浏览器回放的 WebDriver 支持。无论您想要 WebDriver 使用哪种浏览器进行回放,都需要执行此步骤。详情请参阅:升级 Firefox 的 WebDriver 支持(GeckoDriver)
  2. 升级所需浏览器的 WebDriver 回放支持。请参阅以下部分:

升级 Firefox 的 WebDriver 支持(GeckoDriver)

要升级 Firefox 浏览器的 WebDriver 支持,请按以下步骤更新 GeckoDriver:

  1. 访问 GeckoDriver 下载页面  https://github.com/mozilla/geckodriver/releases
  2. 下载适用于您的架构的 GeckoDriver:
    1. Windows 64-bit 与 32-bit:geckodriver-<VERSION>-win64.zip
    2. Mac 64-bit:geckodriver-<VERSION>-macos.tar.gz
    3. Linux 64-bit:geckodriver-<VERSION>-linux64.tar.gz
  3. .zip 压缩包中提取 geckodriver 可执行文件。
  4. 在 SOAest 安装目录下,运行 update.bat 脚本(Windows)或 update 脚本(Linux 和 Mac),其中包含 –patch 参数和 geckodriver 可执行文件的路径。运行此脚本将使用 patch 参数引用的文件替换安装中的版本。它还会备份安装中被替换的文件,为文件添加 .bak 扩展名。
    • Windows:运行 update.bat –patch /path/to/geckodriver.exe
    • Linux 或 Mac:运行 ./update –patch /path/to/geckodriver

升级 Chrome 的 WebDriver 支持(ChromeDriver)

要升级 Chrome 浏览器的 WebDriver 支持,请按以下步骤更新 ChromeDriver:

  1. 如果尚未升级 Selenium 客户端库,请按照升级 Firefox 的 WebDriver 支持 (GeckoDriver) 中的说明进行升级。
  2. 访问 ChromeDriver下载页面 http://chromedriver.storage.googleapis.com/index.html
  3. 下载最新版本(可点击 LATEST_RELEASE 链接查看最新版本)。
  4. 下载适用于您的架构的 ChromeDriver .zip 文件:
    • Windows 64-bit 与 32-bit:chromedriver_win32.zip
    • Mac 64-bit:chromedriver_mac64.zip
    • Linux 64-bit:chromedriver_linux64.zip
  5. .zip 压缩包中提取 chromedriver 可执行文件。
  6. 在 SOAtest 安装目录下,运行 update.bat 脚本(Windows)或 update 脚本(Linux 和 Mac),其中包含 –patch 参数和 chromedriver 可执行文件的路径。运行此脚本将使用 patch 参数引用的文件替换安装中的版本。它还会备份安装中被替换的文件,为文件添加 .bak 扩展名。
    • Windows:运行 update.bat –patch /path/to/chromedriver.exe
    • Linux 或 Mac:运行 ./update –patch /path/to/chromedriver

升级 Microsoft Edge 的 WebDriver 支持(EdgeDriver)

要升级 Microsoft Edge 浏览器的 WebDriver 支持,请按以下步骤更新 EdgeDriver:

  1. 如果尚未升级 Selenium 客户端库,请按照升级 Firefox 的 WebDriver 支持 (GeckoDriver) 中的说明进行升级。
  2. 访问 Microsoft WebDriver 下载页面(https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)并为您的 Edge 版本下载驱动程序(有关版本支持的详细信息,请参阅浏览器支持)。
  3. 将驱动程序保存到相应操作系统的目录中:
    • Windows:<SOATEST_INSTALL>\plugins\com.parasoft.ptest.libs.web_<version>\root\browsers\webdriver\edge\windows\x86
    • Linux:<SOATEST_INSTALL>\plugins\com.parasoft.ptest.libs.web_<version>\root\browsers\webdriver\edge\linux\x86_64
    • MacOS:<SOATEST_INSTALL>\plugins\com.parasoft.ptest.libs.web_<version>\root\browsers\webdriver\edge\mac\x86_64

在 Linux 上使用 soatestcli 运行 Selenium WebDriver 浏览器场景

SOAtest 运行浏览器测试时会将用于测试的浏览器(例如 Firefox 或 Chrome)作为一个单独的进程启动。在 Linux 上,浏览器进程必须连接到 X 显示。在用户界面运行 SOAtest 时,由于浏览器使用与 SOAtest 相同的显示,因此可以无缝运行。通过自动化任务或在未连接物理显示器的终端中运行 soatestcli 时,需要额外对使用 Selenium WebDriver 回放引擎的浏览器场景进行设置。

启动虚拟 X 服务器 (Xvfb) 创建显示

Selenium 引擎不会自动使用 X 虚拟帧缓存(Xvfb),但可以手动配置。例如,Xvfb 无需显示即可在 Linux 上的自动 soatestcli 任务中运行 Selenium 浏览器场景。在运行 soatestcli 的计算机上安装 Xvfb。(或者,您也可以使用与 SOAtest 一起打包的 Xvfb_Linux,但可能需要对各选项进行试验才能使其正常工作。请参阅让 Xvfb 独立于 SOAtest 工作了解更多信息。)

使用 Xvfb 最简单方法是启动一个供所有 SOAtest 运行使用的进程。操作步骤:

  1. 登录运行 soatestcli 的计算机(例如通过 ssh)。
  2. 运行命令,例如:
    $ nohup Xvfb :99 > /dev/null 2>&1 &

在显示 :99 上启动 Xvfb。  所有日志信息都会被丢弃(发送到 /dev/null)。“nohup”命令可确保 Xvfb 进程在您注销后继续运行。

请注意,每次重启计算机时,都需要在运行 soatestcli 之前另外启动一个 Xvfb 进程。要想避免这种情况,可以使用脚本按需启动和停止 Xvfb。

设置 DISPLAY 环境变量

浏览器根据 DISPLAY 环境变量来决定使用哪种 X 显示。

如何设置环境变量取决于您如何配置自动化任务的运行方式。关键是将 DISPLAY 变量设置为与启动 Xvfb 时相同的值。在上述示例中,该值为“:99”。

如果已创建 shell 脚本,或者需要在服务器上临时运行 soatestcli,则可以直接在脚本中设置变量。例如,如果使用 bash: 

$ DISPLAY=:99 soatestcli ...options...

或:

$ export DISPLAY=:99
$ soatestcli ...options...

如果使用 Jenkins 运行自动化任务,则可以通过配置 Jenkins 节点的环境为任务设置 DISPLAY 变量。(请注意,这将会设置节点上运行的所有任务的变量,而不仅仅是您的 SOAtest 任务。)操作步骤:

  1. 访问 Jenkins 网页。
  2. 登录。
  3. 点击运行 soatestcli 的 Jenkins 节点。
  4. 点击进行节点配置。
  5. 在“节点属性”部分,添加一个名为“DISPLAY”的环境变量和所需的值(如“:99”)。