zoukankan      html  css  js  c++  java
  • 使用页面对象模型(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()); } } }
     

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

  • 相关阅读:
    Kafka项目实践
    页级别的恢复
    Linux查看网卡流量(转)
    Linux Top 命令解析 比较详细(转)
    《神秘的程序员们》漫画26~28:《万年坑系列》 I、II、III(转)
    Linux概念架构的理解(转)
    Building Redis for use on Cygwin(转)
    2014值得期待的Erlang两本新书
    jps命令使用
    编译原理学习导论
  • 原文地址:https://www.cnblogs.com/cloud-test/p/3477230.html
Copyright © 2011-2022 走看看