使用 Selenium WebDriver 进行 Flash 测试
什么是 Flash 测试?
Flash 测试是一种用于检查基于 Flash 的视频、游戏、电影等是否按预期工作的测试类型。换句话说,测试 Flash 功能性就称为 Flash 测试。Flash 是由 Mircomedia(现已被 Adobe 收购)开发的一款非常流行的软件。它用于开发游戏、应用程序、基于图形的动画、电影、手机游戏、程序等。在
在 Selenium 自动化中,如果元素无法通过通用定位器(如 id、class、name 等)找到,则需要 XPath 在网页上找到元素,以便对该特定元素执行操作。但在 Flash 测试中,XPath 无法访问 Flash 对象。因此,需要 Flashwebdriver 对象来查找应用程序中的 Flash 对象。
在这里您将看到如何执行 Flash 测试以及如何使用 Selenium 进行 Flash 测试。
Flash 测试的先决条件
以下是测试 Flash 应用程序的要求
- Flash 应用程序。
- 支持的网页浏览器。
- Adobe Flash Player 插件。
工具 – 以下是 Flash 测试中有用的测试工具。
- Selenium
- Soap UI
- TestComplete
- Test Studio 等。
Selenium 是一个非常流行的网络测试工具。您可以在不同平台和不同语言中创建框架。它是一个开源工具,可以从官方网站下载。它易于配置、使用和实现。
Flash 测试与其他元素的区别
- 为什么 Flash 对象捕获困难?如何解决?
Flash 是一项过时的技术。由于 Flash 对象与 HTML 不同,因此很难捕获。此外,Flash 是一个嵌入式 SWF 文件(小型网络格式)。在移动设备上访问 Flash 对象也很困难。
从 SEO(搜索引擎优化)的角度来看,开发 Flash 比开发 HTML 页面更困难,因为 Flash 无法被搜索引擎完全读取。然而,HTML 5 等先进技术已被引入以克服性能和安全等问题。
- Flash 应用程序的测试方式。
Flash 应用程序以两种方式进行测试
- 手动 – 您可以手动执行测试用例来测试 Flash 对象,因为它简单易测。修复错误后,您要确保 Flash 按预期正常工作并提供签署。
- 自动化 – 您可以使用 Selenium、SoapUI、TestComplete 等自动化工具编写脚本并执行脚本。
- Flash 与其他元素的区别。
如上所述,Flash 与其他元素的主要区别在于 Flash 嵌入在 SWF 文件中,而其他元素嵌入在 HTML 文件中。这就是为什么 HTML 比 Flash 更容易捕获。
如何获取 Flash 电影/Flash 应用程序的 Flash 对象 ID
在任何网页中,<object> 标签用于任何嵌入式多媒体(如 Flash、ActiveX、视频等)。它表示在 HTML 文档中“嵌入”。此标签定义了一个嵌入在 HTML 文档中 <object/> 或 <embed/> 标签内的容器,用于交互式内容或外部应用程序。对象名称用于在网页上定位 Flash 对象。
例如,在下面的示例中,您可以看到 Flash 电影是在 HTML 文档或文件中的“embed”标签中定义的。
示例
/* Html page*/ <html> <body marginwidth="0" marginheight="0"> <embed width="100%" height="100%" name="plugin" src="http://video/movie_play.swf" type="application/flash"/> </body> </html>
使用对象 ID 查找 Flash 元素。
您可以使用 Flash 属性(如对象 ID)来定位 Flash 对象。因此,您可以根据需要对其执行操作,如播放、停止等。
如前所述,Flash 对象无法使用 XPath 访问。因此,为了对这些对象执行任何操作,开发人员需要分配适当的对象 ID。
下面的屏幕显示 Flash 已分配对象 ID“MyFlashMovie”
如何使用 Selenium IDE 录制自动化 Flash
您也可以使用 Selenium IDE 自动化 Flash。
步骤 1) 您需要打开 Flash 应用程序,然后打开 Selenium IDE,如下面屏幕所示
步骤 2) 现在单击右侧的“红色录制按钮”,开始在 Flash 电影上执行操作,然后您将找到录制的脚本,如下所示
录制后,如果用户想执行脚本,他们可以点击“绿色运行按钮”,如下面屏幕所示。Selenium IDE 将一步一步执行脚本。
如何使用 Selenium Webdriver 自动化 Flash。
您也可以通过 Flashwebdriver 对象使用 Selenium web driver 自动化 Flash,然后调用一个方法来操作 Flash 对象。您需要下载 flashwebdriver jar 文件
步骤 1) 下载后,将 jar 文件添加到您的项目中,如下面屏幕所示。
步骤 2) 在 flash jar 文件中有一个单独的 flashobjectwebdriver 类。在您的 Selenium 脚本中实现 flashWebdriver“myFlashmovie”,如下面屏幕所示。
添加 web driver 类“MyFlashMovie”后,您可以访问 Flash 对象。
何时自动化 Flash 测试
通常,当 Flash 对象不易访问时,您需要自动化 Flash 测试。这会导致测试中止,从而无法测试 Flash 对象。
为 Flash 测试创建 Selenium 脚本。
步骤 1) 您可以使用“Guru99”Flash 电影来测试 Flash 场景。
https://demo.guru99.com/test/flash-testing.html
步骤 2) 在 Selenium eclipse 中编写脚本并执行。下面代码执行后将执行以下操作
- 打开 Firefox 浏览器,
- 启动 guru99 flash 网站,
- 播放 Flash 电影,然后
- 停止电影。
import org.openqa.selenium.firefox.FirefoxDriver; import Flash.FlashObjectWebDriver; public class Flash { public static void main(String[] args) throws InterruptedException { // Open firefox browser FirefoxDriver driver = new FirefoxDriver(); // Maximize browser driver.manage().window().maximize(); // Under Flash jar file there is separate FlashObjectWebDriver class FlashObjectWebDriver flashApp = new FlashObjectWebDriver(driver, "myFlashMovie"); // Pass the URL of video driver.get("https://demo.guru99.com/test/flash-testing.html"); Thread.sleep(5000); flashApp.callFlashObject("Play"); Thread.sleep(5000); flashApp.callFlashObject("StopPlay"); Thread.sleep(5000); flashApp.callFlashObject("SetVariable","/:message","Flash testing using selenium Webdriver"); System.out.println(flashApp.callFlashObject("GetVariable","/:message")); } }
步骤 3) :执行上述脚本。
输出:执行上述脚本后,Flash 电影开始播放和停止等。
Flash 测试中的挑战
- 自动化 Flash 应用程序是一项挑战。要自动化 Flash 应用程序,您可以使用 FlexMonkium,它是 Selenium IDE 的一个附加组件。
- 您可能在启用使用 Selenium-Flexmonkium 集成录制/回放 Flex 应用程序时遇到问题。解决方案是用户需要仔细安装 Flex Monkium 并将其集成到 Selenium IDE 中。正确安装将启用录制以自动化 Flash 应用程序。
摘要
- 在 Flash 测试中,您需要检查 Flash 视频、游戏、电影等是否按预期工作。
- 您可以使用 Flash 属性(如对象 ID)来定位 Flash 对象。因此,您可以根据需要对其执行操作,如播放、停止等。
- Flash 与其他元素的主要区别在于 Flash 嵌入在 SWF 文件中,而其他元素嵌入在 HTML 文件中
- 通常,当 Flash 对象不易访问时,您需要自动化 Flash 测试。
- Flash 测试中有用的工具是
- Selenium
- Soap UI
- TestComplete
- Test Studio 等。
- 自动化 Flash 应用程序是一项挑战。要自动化 Flash 应用程序,您可以使用 FlexMonkium,它是 Selenium IDE 的一个附加组件。