使用BDD框架后,如何在Framework層架構(gòu)出健壯、穩(wěn)定、高擴(kuò)展的架構(gòu)是項(xiàng)目成功的關(guān)鍵。這個(gè)時(shí)候再使用線性腳本執(zhí)行的方式明顯是不適用的。目前比較普遍的做法是使用PO模式(Page Object Model)。
下面就簡(jiǎn)單介紹一下PO模式:
Page Object Model的核心是分離測(cè)試對(duì)象和測(cè)試數(shù)據(jù)。
首先我們看一段代碼
PageObject:Object類,作用初始化webdriver并對(duì)要用的webdriver的接口進(jìn)行二次封裝。
public class WebDriverObject { private static IWebDriver _CurrentDriver; //初始化webdriver,靜態(tài)變量保證唯一性 public static IWebDriver CurrentDriver { get { if (_CurrentDriver == null || _CurrentDriver.WindowHandles.Count == 0) { InternetExplorerOptions opt = new InternetExplorerOptions(); opt.IgnoreZoomLevel = true; opt.IntroduceInstabilityByIgnoringProtectedModeSettings = true; opt.EnablePersistentHover = false; _CurrentDriver = new InternetExplorerDriver(opt); } if (_OpenedWindowHandles == null) { _OpenedWindowHandles = new List<string>(); } else { _OpenedWindowHandles.Clear(); } OpenedWindowHandles.Add(_CurrentDriver.CurrentWindowHandle); return _CurrentDriver; } } //封裝運(yùn)行JS的方法 public static object ExecuteJavaScript(string script) { return null; } //封裝運(yùn)行JQuery的方法 public static object ExecuteJavaScript(string script, params object[] args) { return null; } //封裝click,sentText等,不同Page公用的方法 }
Page類中,根據(jù)Oject類中的提供的二次封裝的接口,實(shí)現(xiàn)當(dāng)前頁(yè)面要實(shí)現(xiàn)的方法,如Login方法。
public class CPPage { const string LogonPageTitle = ''; //portal Title public bool Login(Dictionary<string,string>info = null) { WebDriverHelper.CurrentDriver.Navigate().GoToUrl('192.168.0.1/portal'); //調(diào)用Object類中相應(yīng)的方法實(shí)現(xiàn)對(duì)應(yīng)需求 ... } }
PO模式就是Page + Object。不同種類Page采用調(diào)用Object類的中二次封裝的webbriver的方法根據(jù)各自Page不同的需求封裝自己的方法。再通過(guò)Page類實(shí)例對(duì)對(duì)應(yīng)Page進(jìn)行相關(guān)操作。
聯(lián)系客服