如何自动化本地浏览器对话框、ActiveX 等

Squish主要用于支持对网页DOM、DHTML和HTML元素的自动化操作。但要完全测试一个网络应用程序,通常还需要自动化对其他类型组件的 操作,以及对话框——本节展示了执行此类测试的技术。

自动化本地浏览器对话框(登录、证书等)

许多网络应用程序需要在浏览器的本地身份验证对话框中进行登录,或者在启动过程中接受证书。Squish可以实现自动化登录和接受证书,如下所述。

自动化本地登录

Squish提供了一个函数,您可以从测试脚本中调用automateLogin(username, password)来自动化使用浏览器的本地身份验证对话框的登录。使用它的关键是启动登录过程(通常是通过点击按钮或链接),然后等待登录对话框出现,然后输入用户名和密码。以下是一个示例代码片段,展示了可能如何执行此操作

clickLink(":Login_A")
waitFor("isBrowserDialogOpen()")
automateLogin(tester_username, tester_password)
clickLink(":Login_A");
waitFor("isBrowserDialogOpen()");
automateLogin(tester_username, tester_password);
clickLink(":Login_A");
waitFor("isBrowserDialogOpen()");
automateLogin($tester_username, $tester_password);
clickLink(":Login_A")
waitFor("isBrowserDialogOpen()")
automateLogin(tester_username, tester_password)
invoke clickLink ":Login_A"
invoke waitFor {invoke isBrowserDialogOpen}
invoke automateLogin $tester_username $tester_password

代码片段假定tester_usernametester_password是存储测试者用户名和密码的变量。

在某些情况下,没有这样的登录按钮或链接,而是在网站开始加载时自动打开登录对话框。当使用startBrowser(url)函数加载该网站时,这种情况需要稍微不同的方法。

Squish确保在从它返回到测试脚本之前,给startBrowser函数的网站已加载。当浏览器显示登录对话框时,网站的加载将暂停,直到接收到适当的登录数据时不会继续。这是一个问题,因为只有在startBrowser函数完成后,并在执行automateLogin调用时,才能进行登录的自动化。因此,直到startBrowser遇到超时并生成错误,测试将最终挂起。

为了使此用例工作,首先需要加载一个未受保护的网站,以便startBrowser可以成功完成。一旦startBrowser完成,您可以使用evalJS()将JavaScript windowlocation.href属性设置为加载不同的网站。即使网站打开登录对话框,设置属性也会立即返回,因为页面还没有完全加载。以下代码片段展示了处理此场景的小型示例代码

startBrowser("https://www.froglogic.com/");
evalJS("window.location.href='https://secureweb.site';");
automateLogin(tester_username, tester_password);
startBrowser("https://www.froglogic.com/")
evalJS("window.location.href='https://secureweb.site';")
automateLogin(tester_username, tester_password)
startBrowser("https://www.froglogic.com/");
evalJS("window.location.href='https://secureweb.site';");
automateLogin(tester_username, tester_password);
startBrowser("https://www.froglogic.com")
evalJS("window.location.href='https://secureweb.site';");
automateLogin(tester_username, tester_password)
invoke startBrowser "https://www.froglogic.com"
invoke evalJS "window.location.href='https://secureweb.site';"
invoke automateLogin $tester_username $tester_password

Squish的automateLogin(username, password)函数自动化了Squish支持的任何浏览器的本地浏览器身份验证对话框,因此您不需要自己考虑浏览器之间的差异。

注意:在使用automateLogin(username, password)函数时,必须在系统偏好设置中开启“辅助功能”。

ActiveX

缩放支持自动化交互和测试非HTML/DOM元素,即嵌入网页中的原生对象。这是在相当抽象的级别上完成的,意味着可以记录和重放鼠标和文本输入。此外,可以使用Spy工具检查嵌入的原生对象,并为这些原生对象插入验证。在测试脚本中可以访问原生对象的所有公开属性。

注意: ActiveX是针对Windows的特定技术,因此在其他平台上没有支持。Squish的Qt和Web版本支持ActiveX。然而,Web版本只在Internet Explorer上支持它。

©2024 Qt公司有限公司。本文档中的文档贡献归其所有者所有。
本提供的文档根据自由软件基金会发布的GNU自由文档许可证第1.3版的条款进行许可。
Qt和相应的标志是芬兰及其在全球的商标,所有其他商标归其所有者所有。