????????????????????????????????????????????XUnit????????B/S?????????????????????Щ??????????????????????????з??棬??????????Щ????????????????????????????????Щ????????????????????÷?????????????

?????????????????????

????1??NUnitAsp????????http??//nunitasp.sourceforge.net/

?????????????????????????????????????е???????????????????????????

?????????????????????????????????

????NUnitAsp??????????????е?????????????????????????????????JavaScript????????????????????????

????2??WatiN????????http??//watin.sourceforge.net/

???????????????????????????????????е?????????API???????

?????????????????????????????????


??????????????????????????????У???????????????????????????????WatiN??????????????????????????á?

????????????????

?????????????1??????????????????????????

????[Test]
????publicvoidSearchForWatiNOnGoogle()
????...{
????/**//*?????????????IE?????????www.google.com?????
????*?????????IE??????????????ie.GoTo(url);??????????????
????*/
????using(IEie=newIE("http://www.google.com"))
????...{
????/**//*????????в???name?????"q"????????????????????TypeText????
????*???????ü???????"WatiN"
????*???TypeText?????????????????????????????????????????
????*????????????????????????????????
????*ie.TextField(Find.ByName("q")).Value="WatiN";
????*/
????ie.TextField(Find.ByName("q")).TypeText("WatiN");
????ie.Button(Find.ByName("btnG")).Click();
????Assert.IsTrue(ie.ContainsText("WatiN"));
????}
????}
 

??????δ??????????????????IE???????GOOGLE??????WatiN?????????????????д???Щ?????

????????WatiN???????

????WatiN.Core.Find

???????????????Find???????????????????????????????????????Щ?????????????????????????е???????ie.Button??Find.ByName????btnG??????.Click??????????????Find????????ByName????????name???????????HTML????????????IE?????Button???????????????????????

????WatiN.Core.IE

???????????????????????????????????????

????1.????

????HtmlDialogs????????????JavaScript???????????????????????????????????????????????????з?????window.open?????????б???

????Frames?????????????????Frames

????2.????

???????????AttachToIE?????????????IE??????

????Button??TextField??Image??Div?????з???????Find???????????????IE??????????????????HTML????

???????????е??Щ????

????1??????????????μ?????????

????????????Щ???????????μ?????????д??????????????????????????

???????????????????????????????????????????????棺login.aspx?????????????JAVASCRIPT??.open?????????????????????????????login.aspx?? $new_page$

???????????????????????д??

????publicvoidLogin(stringuid??stringpasswd)
????...{
????stringurl=Host+"login.aspx";
????ie=newIE();
????ie.GoTo(url);
????ie.WaitForComplete();
????ie.TextField(Find.ById("txtUserName")).Value=uid;
????ie.TextField(Find.ById("txtPwd")).Value=passwd;
????ie.Button(Find.ById("btnLogin")).Click;//??????????????е?????????????????????
????ie=IE.AttachToIE(Find.ByTitle(newWatiN.Core.Comparers.RegexComparer(newSystem.Text.RegularExpressions.Regex(".*????????.*"))));
????ie.WaitForComplete();
????MainFrame=ie.Frame(Find.ByName("MainFrame_00001"));
????MenuFrame=ie.Frame(Find.ById("leftMenu"));
????}

??????????????????У??????????WatiN?????????????????????????????????????????????????????????????????????????????????????????????ɡ????~~```????????????


????publicvoidLogin(stringuid??stringpasswd)
????...{
????stringurl=Host+"frmlogon.aspx";
????ie=newIE();
????ie.GoTo(url);
????ie.WaitForComplete();
????ie.TextField(Find.ById("txtUserName")).Value=uid;
????ie.TextField(Find.ById("txtPwd")).Value=passwd;
????ie.Button(Find.ById("btnLogin")).ClickNoWait();//????????????????????????????IE??????
????//????????????????????????????????????????
????//??????????????????????????????
????ie=IE.AttachToIE(Find.ByTitle(newWatiN.Core.Comparers.RegexComparer(newSystem.Text.RegularExpressions.Regex(".*????????.*"))));
????ie.WaitForComplete();
????MainFrame=ie.Frame(Find.ByName("MainFrame_00001"));
????MenuFrame=ie.Frame(Find.ById("leftMenu"));//???????Frame???????????
????}
 


????2??????alert??confirm??javascript?????????????

??????????????????????????????Щjavascript???????Щ?????????????????Щ??????????????????Щ???????OK??Cancel?????

?????????????WatiN?????????£????????????????Щ????????????Cancel???????????????????????Щ???????????IE???????????????????????


????//????????
????protectedvoidf()
????...{
????WatiN.Core.DialogHandlers.ConfirmDialogHandlerdh=newWatiN.Core.DialogHandlers.ConfirmDialogHandler();
????ie.AddDialogHandler(dh);//??????????????????
????/**//*
????????yzp_dic_btn_cls????????onclick???????JS???????Confirm?????
??????????????????????????????????????в???????????????????????У?
????????????????????????????????????????dh.WaitUntilExists(3);????????????
????*/
????doc.Button(Find.ByName("yzp_dic_btn_cls")).Click();
????dh.WaitUntilExists(3);//????????????????????????
????dh.OKButton.Click();//???????????OK???
????ie.RemoveDialogHandler(dh);
????doc.Button(Find.ByName("btn_close")).Click();
 


??????????????????

????protectedvoidf()
????...{
????WatiN.Core.DialogHandlers.ConfirmDialogHandlerdh=newWatiN.Core.DialogHandlers.ConfirmDialogHandler();
????ie.AddDialogHandler(dh);
????doc.Button(Find.ByName("yzp_dic_btn_cls")).ClickNoWait();//???????Click????????????
????dh.WaitUntilExists(3);//????????????????????????
????dh.OKButton.Click();//???????????OK???
????ie.RemoveDialogHandler(dh);
????doc.Button(Find.ByName("btn_close")).Click();
????}
 

????3????????JS??????Modal??????????????????

????????????Щ???????????????????????????

????????????????????????????????????????IE?????HtmlDialogs????????????????

????protectedvoidf()
????...{
????//???????????д?????????????????????Click????????????
????//??????????ClickNoWait????????Click?????????????????????????????С?
????ie.Button(Find.ByName("yzp_dic_btn_cls")).ClickNoWait();
????ie.HtmlDialogs[ie.HtmlDialogs.Length-1].TextField(Find.ByName("Q")).Value="Hello";
????ie.HtmlDialogs[ie.HtmlDialogs.Length-1].Button(Find.ByName("btn_query")).Click();
????}
 

???????

?????????????????????????????????HTML????Click??ClickNoWait?????????????ж?????????????????????Value???????TypeText??AppendText?????????????????????????????????????κ?JS????????????KeyDown??KeyUP???????