Ⅰ.8 如何实现原生浏览器对话框、ActiveX以及更多项的自动化

来源:互联网 发布:购买小提琴知乎 编辑:程序博客网 时间:2024/06/09 19:34

Squish主要是设计用来支持自动化的操作网页的DOM,DHTML和HTML元素。但是为了完整的测试一个网页应用程序,通常有必要使对其他类型组件的操作自动化,也包括对话框——这个部分展示了用于执行这种测试的技术。

Ⅰ.8 .1 使原生浏览器对话框自动化(登录,验证,等等)

许多网页应用程序需要一个登录,该登陆使用了浏览器的原生身份验证对话框,或者作为开启进程的一部分接受验证。Squish让这种自动化的登录和接受验证成为可能。

Ⅰ.8.1.1 使一个原生登录自动化

Squish提供了一个自定义函数,在测试脚本中调用它可以使浏览器的原生身份验证对话框的登录自动化。使用它的关键是开区一个登录进程(一般通过点击一个按钮或者链接),然后等待登录对话框出现,然后输入用户名和密码。下面是一个代码片段,展示了如何操作的:

clickLink(":Login_A")waitFor("isBrowserDialogOpen()")automateLogin(tester_username,tester_password)
上述代码假设 tester_username 和 tester_password 是存储了tester的用户名和密码的变量。Squish的automateLogin 函数使Squish支持的浏览器的原生浏览器身份验证对话框自动化,因此你自己不必为浏览器的差异化做任何事情。

特定的Mac OS X 

在Mac OSX上,当你使用 automateLogin 函数时,你必须在System Preference中打开Universal Access。

Ⅰ.8.1.2 使接受验证自动化

依赖于你所使用的哪款网页浏览器实现自动化的接受一个验证。这个部分解释了为使每个Squish支持的网页浏览器实现自动化我们需要做些什么。

Ⅰ.8.1.2.1  IE 6或者之后的版本

当在IE下运行一个测试时,自动化的接受一个验证的唯一必须的步骤是永远只接受一次。这必须通过手动实现。在这之后,每此测试运行期间Squish将会通知IE使用已被接受的验证,并且不需要更多的手动干预。

Ⅰ.8.1.2.2 Mozilla Firefox

在Firefox中,为了接受一个验证,你必须将一些代码添加到测试脚本中以使浏览器对话框自动化的接受验证。另外,有必要对一个将会使测试案例挂起的问题采取临时措施。为了做这些,首先必须加载一个临时的地址,然后读取可被加载的地址。

下面的例子展示了如何自动化连接到一个HTTPS 地址,以及接受验证。

# Workaround: Load a temporary page firstloadUrl("http://www.froglogic.com")#Now load the real pageloadUrl("https://the.real.site.you.want.to.load")if Browser.type() == Crowser.Firefox:    # Accept the certificate    waitFor("isBrowserDialogOpen()")    nativeType("<Return>")    snooze(1)    # Accept the second certificate dialog    nativeType("<Left>")    nativeType("<Return>")    waitFor("not is BrowserDialogOpen()")    rehook()
加载临时的页面只是一个不幸的——但很不明显的——必要性。一旦加载了页面,Firefox使用了两份对话框来完成验证的接受,因此我们必须与它们两个交互以完成接受。我们使用了nativeType 函数来模拟键盘交互,这里正常情况下我们会使用 type 函数。同样,在与对话框交互之后我们必须调用 rehook 函数让Squish做一些重载和重新初始化工作来计数,因为已经接受了验证,作为结果网页是在不同的状态。

Ⅰ.8.1.2.3  Safari

当在Safari下运行一个测试时需要自动化的接受验证的唯一步骤是永远只接受一次。这必须通过手动实现:首先,打开Safari的验证页面,然后选择浏览弹出表格中验证的细节,然后检查checkbox,在重连时该checkbox通知Safari总是信任验证。之后,Squish将会通知Safari在每个运行的测试中使用已接受的验证,不需要更多的人工干预。

Ⅰ.8.2 ActiveX

Squish支持自动化交互和测试非HTML/DOM 元素,即native 对象,这些都被嵌入在网页中。在一个相当抽象的水平实现的,就是意味着可以巨鹿和回放鼠标和输入的文本。另外,可以使用Spy工具检查嵌入的native对象,以及为这些native 对象插入verification 。在测试脚本中可以访问一个native 对象的所有公开属性。

Windows 和 IE-specific: ActiveX

ActiveX 是Windows-specific技术,因此其他平台不支持。Squish的Qt版本支持ActiveX,Squish的Web版本也支持——但是后者只限于在IE中。




0 0