章节目录:
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 引擎相关的更改。
__No_Name_:#
窗口格式标识符。使用这种格式重新运行并打开录制的情景。通过下拉菜单指定正确的窗口。您可以使用窗口名称或窗口索引来标识窗口。下列命令可在 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 引擎则尝试模拟真实用户,只与可见元素进行交互。如果您的旧场景与隐藏元素交互,请添加中间步骤以显示隐藏元素,这样您就可以成功运行带有隐藏元素的场景。最常见的方法是点击一个元素,使隐藏的元素变得可见。
例如,“无法执行用户操作:元素当前不可见”之类的错误信息可能表明需要进行迁移(也可能表明应用程序行为不符合预期)。
旧版引擎在验证 href
或 src
属性时会提取相对路径。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 命令执行相同的操作:
Accept Script Dialog
替换 Assertalert
。Accept Script Dialog
或 Dismiss Script Dialog
来替换 Assertconfirmation
。Choosecancelonnextconfirmation
已删除,不再有使用的必要。Accept Script Dialog
或 Dismiss Script Dialog
来替换 Assertprompt
和 Answeronnextprompt
用户操作。Accept Script Dialog
或 Dismiss Script Dialog
操作关联。setsebool -P unconfined_chrome_sandbox_transition 0
命令行禁用。您可以在 SOAtest 新版本发布之前升级 SOAtest 的 Selenium WebDriver 版本。如果改用与 SOAtest 随附版本不同的 Selenium WebDriver 版本,由于Parasoft 未提供官方支持或进行测试,在运行较新版本的 Selenium WebDriver 时可能会遇到不兼容的问题。
要进行升级,您需要:
|
SOAtest 运行浏览器测试时会将用于测试的浏览器(例如 Firefox 或 Chrome)作为一个单独的进程启动。在 Linux 上,浏览器进程必须连接到 X 显示。在用户界面运行 SOAtest 时,由于浏览器使用与 SOAtest 相同的显示,因此可以无缝运行。通过自动化任务或在未连接物理显示器的终端中运行 soatestcli 时,需要额外对使用 Selenium WebDriver 回放引擎的浏览器场景进行设置。
Selenium 引擎不会自动使用 X 虚拟帧缓存(Xvfb),但可以手动配置。例如,Xvfb 无需显示即可在 Linux 上的自动 soatestcli 任务中运行 Selenium 浏览器场景。在运行 soatestcli 的计算机上安装 Xvfb。(或者,您也可以使用与 SOAtest 一起打包的 Xvfb_Linux,但可能需要对各选项进行试验才能使其正常工作。请参阅让 Xvfb 独立于 SOAtest 工作了解更多信息。)
使用 Xvfb 最简单方法是启动一个供所有 SOAtest 运行使用的进程。操作步骤:
运行命令,例如:$ nohup Xvfb :99 > /dev/null 2>&1 &
在显示 :99 上启动 Xvfb。 所有日志信息都会被丢弃(发送到 /dev/null
)。“nohup”命令可确保 Xvfb 进程在您注销后继续运行。
请注意,每次重启计算机时,都需要在运行 soatestcli 之前另外启动一个 Xvfb 进程。要想避免这种情况,可以使用脚本按需启动和停止 Xvfb。
浏览器根据 DISPLAY 环境变量来决定使用哪种 X 显示。
如何设置环境变量取决于您如何配置自动化任务的运行方式。关键是将 DISPLAY 变量设置为与启动 Xvfb 时相同的值。在上述示例中,该值为“:99”。
如果已创建 shell 脚本,或者需要在服务器上临时运行 soatestcli,则可以直接在脚本中设置变量。例如,如果使用 bash:
$ DISPLAY=:99 soatestcli ...options...
或:
$ export DISPLAY=:99
$ soatestcli ...options...
如果使用 Jenkins 运行自动化任务,则可以通过配置 Jenkins 节点的环境为任务设置 DISPLAY 变量。(请注意,这将会设置节点上运行的所有任务的变量,而不仅仅是您的 SOAtest 任务。)操作步骤: