使用页面对象模型(pageFactory)

页面对象模型可以使测试脚本有更高癿可维护性,减少了重复癿代码,把页面抽象出来。

页面对象设计模式提供了测试一个接口,测试可以像用户行为一样来操作页面。

通过隐藏页面元素定位,返有劣将测试代码和页面分离。使代码看起来好看整洁

在写此代码时候,遇到driver 为null,调试后原来没有driver传到

driver.Navigate().GoToUrl(Url)

 此系统的验证码是用代理服务器获取的,因为没有代码经验,debug的时候,验证码返回的值是null,经询问开发人员,原来我没有配置文件

此代理服务器为局域网Ip。。

<add key="serviceurl_get_code" value="http://192.168.1.84:9001/imgservice/getcode"/>

直接上代码(login页面为例)

 public class DtMoverLoginPage
        {

            //使用FindsBy注释语言来定位元素,不能直接使用name 或id 来定位元素并作用变量
            private static string Url = "URL";
            private static string Title = "User Login | enterprise network drive";
            private static string LoginTitle = "Enterprise network drive | File";
            private static string ErrorTip = "Please enter theVerification code";
            private IWebDriver driver = new FirefoxDriver();

            

public static string GetServerCode() { return CodeServiceClient.CodeService.GetCode(); } [FindsBy(How = How.Id, Using = "UserName")] [CacheLookup] private IWebElement UserNameField; [FindsBy(How = How.Id, Using = "Password")] private IWebElement PasswordField; [FindsBy(How = How.Id, Using = "ValidateCode")] private IWebElement VerificationField; [FindsBy(How = How.Id, Using = "login_button_credentials")] private IWebElement LoginButon; [FindsBy(How = How.Id, Using = "errorArea")] private IWebElement ErrorAreaTip; public DMoverLoginPage() { PageFactory.InitElements(driver, this); driver.Manage().Window.Maximize(); } public void Load() { driver.Navigate().GoToUrl(Url); } public void Close() { driver.Close(); } public bool IsLoaded { get { return driver.Title.Equals(Title); } } public bool IsLogined { get { return driver.Title.Equals(LoginTitle); } } public bool IsError { get { return driver.Equals(ErrorTip); } } public void DMoverBmi(string userName, string Password, string verCode) { UserNameField.SendKeys(userName); PasswordField.SendKeys(Password); VerificationField.SendKeys(verCode); LoginButon.Submit(); if (IsLogined == true) { Console.WriteLine("Login is successful!"); } else { Console.WriteLine("Login is Fail!"); } driver.Quit(); } public string userName { get { return UserNameField.GetAttribute("value"); } } public string Password { get { return PasswordField.GetAttribute("value"); } } public string VerCode { get { return VerificationField.GetAttribute("value"); } } public class DmLogintests { [Test] //登录 public void DMLoginTest() { DMoverLoginPage dMoverPage = new DMoverLoginPage(); dMoverPage.Load(); dMoverPage.DMoverBmi("angkor", "111111", GetServerCode()); } } }
 

 下一学习:研究如何使测试代码跑起来的原理

原文地址:https://www.cnblogs.com/cloud-test/p/3477230.html