通用Login功能自动化测试

用WaitiN写了个简单的login自动化测试,能够使用少量的代码实现批量账号的login测试。

 

很简单的,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WatiN.Core;

namespace ConsoleApplication1
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            List<LoginTester.LoginAccount> Accounts = new List<LoginTester.LoginAccount>();
            Accounts.Add(new LoginTester.LoginAccount() { UserName = "your user account", Password = "aaaaa", ShouldSuccess = false });
            Accounts.Add(new LoginTester.LoginAccount() { UserName = "your user account", Password = "", ShouldSuccess = false });
            Accounts.Add(new LoginTester.LoginAccount() { UserName = "your user account", Password = "your password", ShouldSuccess = true });

            LoginTester tester = new LoginTester("http://passport.cnblogs.com/login.aspx""http://home.cnblogs.com""tbUserName""tbPassword""btnLogin");
            tester.BrowserVisible = true;
            Accounts.ForEach(t=>tester.ExecuteTest(t.UserName, t.Password, t.ShouldSuccess));


            Console.WriteLine("\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n");
            Console.WriteLine("************Test Report Summary****************");
            Console.WriteLine(tester.ReportSummary);
        }

        public class LoginTester
        {
            public class LoginAccount
            {
                public string UserName { getset; }
                public string Password { getset; }
                public bool ShouldSuccess { getset; }
            }


            private string loginUrl = string.Empty;
            private string loginSuccessForwaredUrl = string.Empty;
            private string loginButtonName = string.Empty;
            private string userNameFieldName = string.Empty;
            private string passwordFieldName = string.Empty;
            public string ReportSummary { getprivate set; }
            public bool BrowserVisible { getset; }

            public LoginTester(string loginUrl, string loginSuccessForwaredUrl, string userNameFieldName, string passwordFieldName, string loginButtonName)
            {
                this.loginUrl = loginUrl;
                this.loginSuccessForwaredUrl = loginSuccessForwaredUrl;

                this.userNameFieldName = userNameFieldName;
                this.passwordFieldName = passwordFieldName;
                this.loginButtonName = loginButtonName;
            }

            public void ExecuteTest(string userName, string password, bool loginSuccess)
            {
                string msg = string.Format("用户名: {0}, 密码: {1}, 期望能否登录: {2}", userName, password, loginSuccess);

                using (IE browser = new IE(this.loginUrl))
                {
                    browser.Visible = this.BrowserVisible;
                    browser.TextField(Find.ByName(this.userNameFieldName)).TypeText(userName);
                    browser.TextField(Find.ByName(this.passwordFieldName)).TypeText(password);
                    browser.Button(Find.ByName(this.loginButtonName)).Click();

                    bool loginIsSuccess = browser.Url.IndexOf(this.loginSuccessForwaredUrl, StringComparison.OrdinalIgnoreCase) >= 0;

                    msg = string.Format("{0}\r\n        {1}", msg, loginIsSuccess == loginSuccess ? "Successful" : "Failed");
                    ReportSummary += msg+"\r\n";
                    Console.WriteLine(msg);
                }
            }
        }
    }

 

源代码下载 

posted @ 2012-11-21 23:27  McKay  阅读(1748)  评论(4编辑  收藏  举报