Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space FUNCTDEV and version SVC2020.1

...

Table of Contents
maxLevel1

前言

Selenium 使用以下命令直接调用浏览器它提供: 

...

新的浏览器场景默认情况下使用 Selenium。可以将任何现有的浏览器场景(在 WebDriver 支持之前录制)配置为在 Selenium 中播放(正如所述将旧版浏览器录制重新配置为在 Selenium 中播放)。

Selenium 引擎不会自动使用 X 虚拟帧缓冲区(Xvfb),但可以手动配置。例如,通过 Xvfb,您可以在 Linux 上的自动化 soatestcli 作业中运行 Selenium 浏览器场景而无需显示。详细参见在 Linux 上使用 soatestcli 运行 Selenium WebDriver 浏览器场景

迁移的笔记

  • Legacy 浏览器录制可能包含 Selenium 引擎不支持的操作。 详细参见 重新配置旧版浏览器以录制 Selenium 回放 。
  • 由于 Selenium WebDriver 引擎使用 32 位版本的 Internet Explorer,因此在使用 Selenium 引擎时,将不会应用任何自定义的 Internet Explorer 可执行路径设置(例如,从 Preferences> Browser> IE Executable Path)。
  • 现在不建议使用“等待异步请求”等待条件。无法添加新的等待条件,现有条件将继续起作用,除非您将关联的场景转换为 Selenium 播放。你可以将这些等待条件替换为“等待没有流量的间隔时间”等待条件。确保间隔足够长,以便发生异步请求。
  • _No_Name _:# 窗口格式标识符可以在旧版浏览器记录中用于标识窗口,但是Selenium WebDriver 框架不支持此格式。要迁移这些记录,请重新运行它们,然后将其打开并使用下拉菜单指定正确的窗口。您可以使用窗口名称或窗口索引来标识窗口。

不推荐使用的命令(以及其他可用选项)

  • Fireevent: 不再需要,因为 Selenium WebDriver 使用本机事件来模拟用户行为。
  • Keydown: 仅支持值为“ Shift”,“ Control”或“ Alt”的文本输入。由于 Selenium WebDriver 对用户行为的本机模拟,因此不需要其他关键修饰符。
  • Keypress: 不再需要,因为 Selenium WebDriver 使用本机事件来模拟用户行为。
  • Keyup: 仅支持值为“ Shift”,“ Control”或“ Alt”的文本输入。由于 Selenium WebDriver 对用户行为的本机模拟,因此不需要其他关键修饰符。
  • Mousedown: 不再需要,因为 Selenium WebDriver 使用本机事件来模拟用户行为。
  • Mousemove: 不再需要,因为 Selenium WebDriver 使用本机事件来模拟用户行为。
  • Mouseover: 不再需要,因为 Selenium WebDriver 使用本机事件来模拟用户行为。
  • Mouseup: 不再需要,因为 Selenium WebDriver 使用本机事件来模拟用户行为。
  • New Browser: 在播放期间不再可能产生第二个浏览器。
  • Other: 不再可能使用 Other 和 UserCustomizableOptions.js 编写自定义命令。
  • Type (Without Focus): 不再需要,因为 Selenium WebDriver 使用本机事件来模拟用户行为。
  • Type Password (Without Focus): 不再需要,因为 Selenium WebDriver 使用本机事件来模拟用户行为。

迁移与隐藏元素交互的动作

传统引擎可以与隐藏元素进行交互。但是,由于 Selenium 引擎尝试模拟真实用户,因此它仅与可见元素进行交互。因此,如果遗留场景与隐藏元素交互,可能需要添加中间步骤来显示隐藏元素,然后才能使用 elenium 成功运行该场景。最常见的方法是单击使隐藏元素变得可见的元素。

错误信息如 无法执行用户操作:元素当前不可见可能表明需要迁移(它还可能表明应用程序没有按照预期的方式运行)。 

迁移验证 Use Relative URLs

为了验证 hrefsrc 属性,如果在定位器中给出了相对路径,旧版驱动程序会提取 URL 的相对路径。但是,Selenium 引擎提取绝对路径而不是相对路径。例如,假设您在http://localhost:8080域上有
<a href=”xyz.html”> 内容浏览。验证将是:

...

要执行迁移,只需更新预期值。例如,如果遗留场景使用 



您可以将其更新为


脚本对话框动作的弃用和迁移

以下处理对话框的操作仍然是允许的,但不能在录制期间创建:

...

新的录音将使用等效的 Selenium 命令(例如,“接受脚本对话框”,“关闭脚本对话框”,“键入脚本对话框”)。 

在 IE、Chrome、Firefox 上迁移播放操作

如果使用了旧的脚本对话框操作(例如,Assertalert,Assertconfirmation,Assertprompt)并且选择了 Selenium 引擎进行播放,则无法应用“等待脚本对话框”。由于旧版引擎和 Selenium 引擎之间的差异,当使用 Selenium 播放这些旧版操作时,延迟打开的对话框将始终失败,并显示“无警报”错误(无论是否等待已添加到测试中脚本对话框等待条件)。  

...

  • 更新断言: 用接受脚本对话框替换 Assertalert。
  • 更新确认:传统场景可能有 Assertconfirmation 用户操作;如果希望用户按“取消”, 他们可能还会执行选择取消再次确认。要迁移这些场景,请删除 Choosecancelonnextconfirmation 用户操作,然后将 Assertconfirmation 用户操作替换为 Accept Script 对话框或 Dismiss Script 对话框(取决于用户对话框中是按 “OK”还是 “Cancel”)。
  • 更新提示:传统场景将具有 Assertprompt 用户操作;如果用户输入文本,他们可能还会有 Answeronnextprompt 操作。要迁移这些场景,请使用“接受脚本对话框”或“关闭脚本对话框”替换 Assertprompt(取决于用户对话框中是按 “OK”还是 “Cancel”)。如果旧场景包含 Answeronnextprompt,则应删除该用户操作,并应在“接受/关闭脚本对话框”用户操作之前立即添加“键入脚本对话框”。
  • 更新附件/操作:附加到触发警报的操作(例如,单击“警报”)的任何浏览器验证工具或“等待异步请求”都应在该操作之后重新附加到“接受脚本对话框/关闭脚本对话框”。

迁移 Safari 上的播放操作

由于缺少等待条件,触发警报的操作附带的浏览器验证工具有时可能无法正常工作(由于使用了遗留脚本对话框操作并且选择了 Selenium 引擎,因此无法应用“等待脚本对话框”)。在这种情况下,将浏览器验证工具移至下一个操作。

Anchor
Selenium Known Bugs and Issues
Selenium Known Bugs and Issues
Selenium 已知的错误和问题

兼容性问题

  • Chrome 28+ 和 Selenium 的 chromedriver 与 RHEL/!CentOS 6.x.不兼容。尽管有警告报告,CentOS 7.0(64位)也可以工作。可以使用 setsebool -P unconfined_chrome_sandbox_transition 0 从命令行禁用此警告。

Selenium 脚本对话框问题

其他问题

  • 对于“ click”用户操作,由于 Selenium WebDriver 中的问题,仅在 Chrome 中支持键输入修饰符(“ Shift”,“ Ctrl”和“ Alt”)。详见https://code.google.com/p/selenium/issues/detail?id=4385.
  • 通过一个用户操作打开多个窗口时,Selenium WebDriver 可能会为 Chrome 和 Internet Explorer 返回有顺序的错误的窗口处理程序。仅在未命名窗口的情况下可能会发生这种情况。解决方法是使用命名窗口
  • 无法在 Safari 或 Internet Explorer 中单击区域元素。详见 https://code.google.com/p/selenium/issues/detail?id=2354.
  • 在 Internet Explorer 中,如果应用程序使用新的实现覆盖元素上的默认“ fireEvent”实现,则 Selenium 将在对该元素执行操作时触发新的实现。这与默认的浏览器行为不同,在默认的浏览器行为中,即使 Web 应用程序更改了“ fireEvent”方法,也会调用默认的“ fireEvent”实现。
  • Selenium 不支持以无头模式播放场景。如果选择无头模式,则场景仍将以可见模式播放。

Safari-Specific 问题
Anchor
Safari-Specific Issues
Safari-Specific Issues

不支持的命令

Safari 中的 Selenium WebDriver 引擎不支持以下命令。这是由于 SafariDriver 中的限制(https://code.google.com/p/selenium/issues/detail?id=4136)

  • DoubleClick
  • Dragdrop
  • Go Back
  • Go Forward
  • Hover
  • Keydown
  • Keyup
  • Right-click

不支持的功能

由于 Selenium 的限制,以下 SOAtest 功能会受到影响:

  • 播放场景时不录制流量。
  • 不支持 NTLM /Digest/Basic 身份验证。
  • 不支持配置和验证负载测试。
  • 不支持将工具附加到 HTTP 通信。
  • 在经过配置的时间间隔后,无论浏览器或服务器是否正在发送流量,“等待无流量间隔”等待条件将始终成功。
  • “等待异步请求”等待条件不起作用。
  • 不支持使用不受信任证书的站点。

其他问题

Anchor
UsingSelenium
UsingSelenium
使用 Selenium WebDriver 进行旧版浏览器录制

使用 Selenium WebDriver 可以运行两个选项来运行旧版浏览器录制(在9.8之前创建):

...

注意旧场景可能包含不推荐使用的操作。 如果是这样,当您选择 Use Selenium for Playback 时,会打开一个警告对话框。看到此对话框后请查看场景并根据需要修改操作。有关更多详情,请查阅 关于 Selenium WebDriver 引擎 Selenium Known Bugs and Issues 。此外,如果任何旧场景触发了 beforeunload 事件,则您需要添加新的用户操作(例如,接受脚本对话框,关闭脚本对话框)以处理出现的对话框。

重新配置旧版浏览器来录制 Selenium 回放
Anchor
Reconfiguring Legacy Browser Recordings to Play Back in Selenium
Reconfiguring Legacy Browser Recordings to Play Back in Selenium

要重新配置旧版 Web 场景以使用 Selenium WebDriver 引擎进行回放,请执行以下操作:

  1. 打开要转换的场景的测试套件。
  2. 打开 Browser Playback Options 选项卡,然后启用 Selenium WebDriver  播放引擎选项。
     

运行使用 Configuration 的测试配置

默认情况下,测试配置被设置为使用测试套件级别指定的回放引擎来播放 web 场景。这允许使用单个测试配置来指定 Selenium 配置的混合测试以及遗留引擎配置的测试。 

...

不管在测试场景级别配置了什么引擎,使用此配置运行的任何测试都将使用 Selenium WebDriver 进行回放。

Anchor
UsingtheLegacy
UsingtheLegacy
使用旧版本机驱动程序

如果您希望在特定情况下使用旧版本机驱动程序:

  1. 使用旧版引擎的场景打开测试套件。
  2. 打开 Browser Playback Options 选项卡,然后启用 Parasoft native driver (legacy) 播放引擎选项。

     

另外,您可以创建并应用一个使用本机驱动程序运行 Web 场景的测试配置,而不管在测试场景级别配置了什么引擎。  此选项在 Execution> Functional 选项卡中设置。

手动升级到 Selenium WebDriver 的新版本

您可以先升级 SOAtest 的 Selenium WebDriver 版本,然后再发布新的 SOAtest 版本, 但是请注意,Parasoft 并未正式支持或测试使用比 SOAtest 随附的版本更高的 Selenium WebDriver 版本。因此,在运行较新版本的 Selenium WebDriver 时,您可能会遇到不兼容的情况。

...

  1. 更新 Selenium 客户端(这还将更新 WebDriver 对 Firefox 回放的支持)。无论您希望 WebDrive 使用哪种浏览器进行播放,都需要执行此步骤。有关更多详情,请查阅 关于 Upgrading Selenium WebDriver 引擎Client Libraries (Includes Updating WebDriver Support for Firefox)
  2. 升级 WebDriver 对所需浏览器(Chrome,Internet Explorer 或 Safari)的播放支持。查看以下部分:
Table of Content Zone
maxLevel2
indent60px
locationtop

更新 Selenium 客户端库(包括更新对 Firefox 的 WebDriver 支持)

无论您要使用哪种浏览器进行播放,以下始终都是更新 Selenium WebDriver 的第一步。在此过程中,升级 WebDriver 对 Firefox 的支持。 

  1. 转到 http://search.maven.org
  2. maven.org 搜索并下载以下文件(使用每个文件的 jar 下载链接)。
    • selenium-api-{x.y.z}.jar
    • selenium-chrome-driver-{x.y.z}.jar
    • selenium-firefox-driver-{x.y.z}.jar
    • selenium-ie-driver-{x.y.z}.jar
    • selenium-edge-driver- {x.y.z}.jar
    • selenium-java-{x.y.z}.jar
    • selenium-remote-driver-{x.y.z}.jar
    • selenium-safari-driver-{x.y.z}.jar
    • selenium-support-{x.y.z}.jar



  3. 从每个下载的 jar 文件中删除版本后缀(例如{x.y.x})。例如,应将 selenium-api-2.45.0.jar 重命名为 selenium-api.jar
  4. 在 SOAtest 安装目录中,运行带有 –patch 参数的 update.bat 脚本(Windows)或 update 脚本(Linux 和 Mac),以及在先前步骤中下载并重命名的每个 jar 的路径。运行此脚本将用 patch 参数引用的文件替换安装中的版本。通过在文件中附加 .bak 扩展名,它还将备份安装中替换的文件。
    • 对于 Windows:运行  update.bat –patch /path/to/[name_of_file].jar
    • 对于 Linux or Mac: Run ./update –patch /path/to/[name_of_file].jar.请注意在某些版本的 Mac 上,您可能需要手动复制 Selenium 驱动程序。

例如,这是在 Windows 上运行脚本以升级  selenium-java.jar 文件并将文件下载到 %DOWNLOADS% 目录时的脚本输出:

Code Block
languagetext
c:\Program Files\Parasoft\SOAtest\9.9>update -patch %DOWNLOADS%\selenium-java.jar INFO: Patching file: C:\Program Files\Parasoft\SOAtest\9.9\eclipse\plugins\com.parasoft.xtest.libs.web_9.9.0.20141024\root\lib-java\org.seleniumhq.selenium\selenium-java.jar
Update completed successfully


完成上述步骤后,可以通过转到 Firefox 加载项页面并检查版本号来确认 Firefox 的 Selenium WebDriver 已升级。

Anchor
ChromeDriver
ChromeDriver
升级 WebDriver 对 Chrome 的支持(ChromeDriver)

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

  1. 如果尚未这样做,请按照 升级 Selenium 客户端库(包括更新 Firefox 的 WebDriver 支持)中所述升级 Selenium 客户端库。
  2. 转到 http://chromedriver.storage.googleapis.com/index.html.上的 ChromeDriver 下载页面。
  3. 下载最新版本(您可以单击 LATEST_RELEASE 链接以了解最新版本)。
  4. 下载适用于您的体系结构的 ChromeDriver .zip 文件:
    • Windows 64 位和 32 位:chromedriver_win32.zip
    • Mac 64-bit and 32-bit: chromedriver_mac32.zip
    • Linux 64-bit: chromedriver_linux64.zip
    • Linux 32-bit: chromedriver_linux32.zip
  5. 从这个 .zip 中提取 chromedriver.exe 文件。
  6. 在 SOAtest 安装目录中,用带有 –patch 参数和 chromedriver.exe 文件路径运行 update.bat 脚本(Windows)或 update 脚本(Linux 和 Mac)。运行此脚本将用 patch 参数引用的文件替换安装中的版本。通过在文件中附加 .bak扩展名,它还将备份安装中替换的文件。
    • Windows:运行  update.bat –patch /path/to/chromedriver.exe
    • Linux or Mac: 运行 ./update –patch /path/to/chromedriver

Anchor
InternetExplorerDriver
InternetExplorerDriver
升级对 Internet Explorer 支持的 WebDriver(InternetExplorerDriver)

要升级 WebDriver 对 Internet Explorer 的支持,请按以下步骤更新 update InternetExplorerDriver:

  1. 如果尚未这样做,请按照 升级 Selenium 客户端库(包括更新 Firefox 的 WebDriver 支持)中所述升级 Selenium 客户端库。
  2. 转到 Selenium 下载页面((http://www.seleniumhq.org/download/),然后在 Internet Explorer Driver Server下下载32 bit Windows IE 版本(即使您运行的是64 版本(即使您运行的是64 位 Windows)
  3. 从 .zip 中解压缩 IEDriverServer.exe文件。
  4. 在 SOAtest 安装目录中,运行带有 –patch 参数和您下载的 IEDriverServer.exe 文件的路径的 update.bat 脚本(例如 update.bat –patch /path/to/IEDriverServer.exe)。运行此脚本会将安装中的版本替换为 patch 参数指向的文件。通过在文件中附加 .bak 扩展名,它还将备份安装中替换的文件。

现在,SOAtest 将使用 InternetExplorerDriver 的较新版本进行播放。

Anchor
SafariDriver
SafariDriver
升级 WebDriver 对 Safari 的支持(SafariDriver)

Selenium 的 SafariDriver在 Safari 10及更高版本中已弃用。更新到最新版本的 Safari并使用 Apple 的 SafariDriver。如果无法升级 Safari,则可以按照以下步骤下载并安装最新的 Safari WebDriver Extension:

  1. 打开 Safari 浏览器,然后转到 Selenium 下载页面(http://www.seleniumhq.org/download/) 
  2. 在 SafariDriver 下,下载 SafariDriver.safariextz. 的最新版本。



  3. 单击下载的文件以安装 Safari WebDriver 扩展。

升级 WebDriver 对 Microsoft Edge 的支持(EdgeDriver)

  1. 如果尚未这样做,请按照 升级 Selenium 客户端库(包括更新 Firefox 的 WebDriver 支持)中所述升级 Selenium 客户端库。
  2. 转到 Microsoft WebDriver 下载页(https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/),然后下载适用于您的 Edge 版本的驱动程序(有关版本支持的详细信息,请参阅Browser Support)。
  3. 将驱动程序保存到以下目录:

    <SOATEST_INSTALL>\eclipse\plugins\com.parasoft.xtest.libs.web_<version>\root\browsers\webdriver\edge\x86\

在 Linux 上使用 soatestcli 运行 Selenium WebDriver 浏览器场景
Anchor
Running Selenium WebDriver Browser Scenarios Using soatestcli on Linux
Running Selenium WebDriver Browser Scenarios Using soatestcli on Linux

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

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

在要运行 soatestcli 的计算机上安装 Xvfb。(或者,您可以使用 SOAtest 打包的 Xvfb_Linux,但是您可能需要尝试一些选项才能使它们运行。详情参见 Getting Xvfb working independently of SOAtest)

使用 Xvfb 最简单的方法是启动一个进程,所有 SOAtest 运行都会使用这个进程。为此:

...

注意每次重新启动计算机时,都需要记住在运行任何 soatestcli 之前启动另一个 Xvfb 进程。可以根据需要使用脚本来启动和停止 Xvfb 以避免这种情况,。

设置 DISPLAY 环境变量

浏览器使用 DISPLAY 环境变量来确定要使用显示的哪个 X。

...