不谋万世者,不足谋一时;不谋全局者,不足谋一域。君子敏于事而慎于言 新浪微薄:土司阿哈

RFT处理未预料的活动窗口(代码收藏二)

上一篇 / 下一篇  2008-06-17 13:58:05 / 个人分类:Rational

1208328177
  • 自动化测试:
  • 测试文档:

5.处理未预料的活动窗口    

%iyb+X8uU0

由于浏览器安全等级改变或切换页面造成警告51Testing软件测试网:G$q g9BnB

录制的可能脚本

UO4tY6]9v%[0

linkThatLeavesSecurePage().click();

.on%o8w0k!K|0

Dialog_HtmlDialogButtonOK().click();51Testing软件测试网;T6bRi };[/])Jq&e

CheckboxOnTheUnsecurePage().click();

N4U5]h#|?0

一个解决办法就是等待消息出现,如果没有出现,你就可以继续了。可以通过以下代码解决51Testing软件测试网Jw}*Ih7E

    linkThatLeavesSecurePage().click();

bgIp;Gq+~?0

try   

y'G:M8r(}0

 {51Testing软件测试网;Y P#n,fhHp0ae

        Dialog_HtmlDialogButtonOK().click();

}C/x K2Pd }7[6up0

     } catch(ObjectNotFoundException e) {}

\0jK |0k^ lf0

CheckboxOnTheUnsecurePage().click();51Testing软件测试网I$v6Q2w9rd+}7T

以上办法解决了主要目标,如果警告消息出现,我们解除了它;如果没有出现,我们最后停止等待并继续。如果我们知道警告消息大概在多少秒后出现,我们可以通过以下方法解决

q1R|I-B{kb0

     linkThatLeavesSecurePage().click();

| i@K'xA2H6b;I g0f0

     try51Testing软件测试网"D7XGFq*g*N

     {

%K9J o.TD t aF KV0

            Dialog_HtmlDialogButtonOK().waitForExistence(5,1);

i#`w3v8b'N Kp0

            Dialog_HtmlDialogButtonOK().click();51Testing软件测试网)C;uq]*U$y

     }

!D/NTd m,A;f0

     catch(ObjectNotFoundException e) {}51Testing软件测试网9x'I:K1r.`-{RI

     CheckboxOnTheUnsecurePage().click();

"rN6g"M`]6V[!x0

最好的解决办法:在helper super scrīpt里添加执行,然后继承这个helper super class来处理脚本中的事件。下面为一个例子,代码实现了一个基础类,基础类实现了方法onObjectNotFound;这个方法检查所有HTML域和对话框。如果有警告就处理,没有就继续运行回放。51Testing软件测试网,i;D}M;N(UNZV

import com.rational.test.ft.scrīpt.*;

5Pir(EDZ pU?0

import com.rational.test.ft.object.interfaces.*;

.IbPpB?0

public abstract class Htmlscrīpt extends RationalTestscrīpt

r k%V[ ?*tc0

{

@3q7j:gB7~#~7?I0

   public void onObjectNotFound(ITestObjectMethodState testObjectMethodState)51Testing软件测试网cNGNFN5R;Vg oO

   {51Testing软件测试网Zc8pyDQ

      boolean dismissedAWindow = false;51Testing软件测试网m8m6H}?*x5Gm$l

      DomainTestObject domains[] = getDomains();

jU0x5B.S5T9lB'kw0

      for (int i = 0; i < domains.length; ++i)

|Z|8ZL E9W6`O/k0

      {

rb Oui.b0

           if (domains[i].getName().equals("Html"))

7w"il9c$?"gG,UG0

           {

1G\:k6NbM${-]:M0

                // HTML domain is found.51Testing软件测试网vF ~D7R_/z+T;Q n!mh

                TestObject[] topObjects = domains[i].getTopObjects();

p5t/E.o"n[%@f0

                if (topObjects != null)51Testing软件测试网|4]MSO.Xs/m

                {51Testing软件测试网^_D"vS2s"W

                    try51Testing软件测试网F)u}"DVs.k

                    {

q2aam2O"{,U0

                       for (int j = 0; j < topObjects.length; ++j)51Testing软件测试网w`;vt3M%l,Eo

                       {

5[{6g0v8f}?EL@'};Iw0

                          if (topObjects[j].getProperty(".class").equals("Html.Dialog"))51Testing软件测试网2`]F1^)Q8o

                          {

o2L#yov` ~0

                               // A top-level HtmlDialog is found.51Testing软件测试网 E,j `d,i q

                   logWarning("Htmlscrīpt.onObjectNotFound - dismissing dialog.");

@v'Wx7A(kHu.I|0

                               try

T*uEh;y^2@ hA}$B*a0

                               {51Testing软件测试网"p.M8\4J OT

                                  dismissedAWindow = true;51Testing软件测试网t8t!^+Um3t

                          ((TopLevelTestObject)topObjects[j]).inputKeys("{enter}");51Testing软件测试网$zc-G:yet#k.EV

                               }

"XS!D!yHm-d)^0

                               catch(RuntimeException e) {}51Testing软件测试网)G0Z/fQ#o!TW1~:C

                          }

(n)v0PhqbnK0

                       }51Testing软件测试网6s'fpnW$q

                    }

8i V7bwy1A0

                    finally51Testing软件测试网ee;Boi

                    {51Testing软件测试网od;kl,eD:_.s6K

                        //unregister all references to top objects

2W6p*k9{}X t0

                        unregister(topObjects);

:{ Y+u6G n0

                    }

Ufs6r:Z8k5vz0

                }

3{n:caUq0

            }51Testing软件测试网2J+sbE ~:i0C}P4T,U

        }51Testing软件测试网5| q2B FCv*}'Z3k

        if (dismissedAWindow)

EDn Exf*~fZ0

        {

4bS qqKM0

           // try again51Testing软件测试网(@9Ste{+b~

           testObjectMethodState.findObjectAgain();

/|I6pUn*Yw1]f0

        }51Testing软件测试网K]_YVUn:bVH

        else

/^D2z+V rg Md F0

        {51Testing软件测试网Oa2^P2o,N

           logWarning("Htmlscrīpt.onObjectNotFound; no Html Dialog to dismiss");

tS&M[ ao7w8~0

        }

4A0A{,Bj p0

     }51Testing软件测试网+{yO5C$r)y+S2w

 }

#ia!u9rr8K0

i8_\,x(B?0

{4imx(pa ?5]0

TAG: Rational

 

评分:0

我来说两句

Open Toolbar