PO模式(Page Object Model)

PO模式(Page Object Model)使用BDD框架后,在Framework层再使用线性脚本的方式明显是不适用的。

大家好,又见面了,我是你们的朋友全栈君。

使用BDD框架后,如何在Framework层架构出健壮、稳定、高扩展的架构是项目成功的关键。这个时候再使用线性脚本执行的方式明显是不适用的。目前比较普遍的做法是使用PO模式(Page Object Model)。

下面就简单介绍一下PO模式:

Page Object Model的核心是分离测试对象和测试数据。

首先我们看一段代码

PageObject:Object类,作用初始化webdriver并对要用的webdriver的接口进行二次封装。

public class WebDriverObject
    {
        private static IWebDriver _CurrentDriver;
 
        //初始化webdriver,静态变量保证唯一性
        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;
            }           
        }

        //封装运行JS的方法
        public static object ExecuteJavaScript(string script)
        {
            return null;
        }

        //封装运行JQuery的方法
        public static object ExecuteJavaScript(string script, params object[] args)
        {
            return null;
        }
        
        //封装click,sentText等,不同Page公用的方法

   }

Page类中,根据Oject类中的提供的二次封装的接口,实现当前页面要实现的方法,如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");
            //调用Object类中相应的方法实现对应需求
            ...
        }
    } 

PO模式就是Page + Object。不同种类Page采用调用Object类的中二次封装的webbriver的方法根据各自Page不同的需求封装自己的方法。再通过Page类实例对对应Page进行相关操作。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135541.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号