初试Selenium WebDriver

一直很想找个工具来进行自动化测试,不然每次靠自己的脑袋记忆和双手去点击实在太辛苦了,也非常SB,不是吗?

之前试过VS里面的一些测试功能,总觉得不太好用,且比较复杂。

最近无意中发现Selenium WebDriver,试了之后还是觉得不错的。

首先你需要去下载安装,可以到http://docs.seleniumhq.org/download/去下载相对应的安装包,不过近阶段可能需要一些特殊的途径才能下载到,懂得自然懂,自己想办法吧!哈哈。

然后按照这个帖子http://www.iquicktest.com/openqa-selenium-2-3-0.html,就可以在firefox上安装插件了,然后我尝试了录制几个demo进行测试,感觉还不错,虽然这个plugin做的还不是非常好用,UI也不够nice。

这是我录制的demo。



注意,在录制过程中,可能由于浏览器的自动记录功能,会省略某些element的收录,比如password等,这时候就需要你自己去完善了。

虽然已经有了demo,但是我还是需要写代码来实现自动测试,下面是我的测试代码。

                IWebDriver driver = new FirefoxDriver();

                //Notice navigation is slightly different than the Java version
                //This is because 'get' is a keyword in C#
                driver.Navigate().GoToUrl("http://localhost/LISA.KenticoCMS.3.0/");

                // username
                IWebElement username = driver.FindElement(By.Id("plc_lt_zoneMenu_LISA_LogonForm_Login1_UserName"));
                username.SendKeys("Manager3");

                // password
                IWebElement password = driver.FindElement(By.Id("plc_lt_zoneMenu_LISA_LogonForm_Login1_Password"));
                password.SendKeys("Manager1");

                // login button
                IWebElement loginbutton = driver.FindElement(By.Id("plc_lt_zoneMenu_LISA_LogonForm_Login1_LoginButton"));
                loginbutton.Click();

                //IWebElement element = (IWebElement)((IJavaScriptExecutor)driver).ExecuteScript("$('.kw1').css('display','block'); ");

                // Google's search is rendered dynamically with JavaScript.
                // Wait for the page to load, timeout after 10 seconds
                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
                wait.Until((d) => { return d.Url.ToLower().Contains("contract"); });

                // checkbox
                IWebElement checkbox = driver.FindElement(By.Id("plc_lt_zoneMain_pageplaceholder_pageplaceholder_lt_zonePoints_French_GenericPointsSplitUp_gvMembers_ctl05_chkSelected"));
                checkbox.Click();

                // points
                IWebElement points = driver.FindElement(By.Id("plc_lt_zoneMain_pageplaceholder_pageplaceholder_lt_zonePoints_French_GenericPointsSplitUp_gvMembers_ctl05_txtPoints"));
                points.SendKeys("100");


                // comment
                IWebElement comment = driver.FindElement(By.Id("plc_lt_zoneMain_pageplaceholder_pageplaceholder_lt_zonePoints_French_GenericPointsSplitUp_gvMembers_ctl05_txtComment"));
                comment.Click();
                System.Threading.Thread.Sleep(5000);

                comment.SendKeys(DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"));

                // save button
                IWebElement savebutton = driver.FindElement(By.Id("plc_lt_zoneMain_pageplaceholder_pageplaceholder_lt_zonePoints_French_GenericPointsSplitUp_btnSaveBottom"));
                savebutton.Click();

                System.Threading.Thread.Sleep(5000);

                // Wait for the page to load, timeout after 10 seconds
                WebDriverWait wait1 = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
                //wait.Until((d) => { return d.FindElement(By.Id("plc_lt_zoneMain_pageplaceholder_pageplaceholder_lt_zonePoints_French_GenericPointsSplitUp_btnConfirmTop")); });
                wait.Until(ExpectedConditions.ElementIsVisible(By.Id("plc_lt_zoneMain_pageplaceholder_pageplaceholder_lt_zonePoints_French_GenericPointsSplitUp_btnConfirmTop")));

                // confirm button
                IWebElement confirmbutton = driver.FindElement(By.Id("plc_lt_zoneMain_pageplaceholder_pageplaceholder_lt_zonePoints_French_GenericPointsSplitUp_btnConfirmTop"));
                confirmbutton.Click();

                // Wait for the page to load, timeout after 10 seconds
                WebDriverWait wait2 = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

                //System.Console.WriteLine("Page title is: " + driver.Title);
                lbl1.Text = "Page title is: " + driver.Title;

                //Close the browser
                driver.Quit();

这段代码可以实现登录并实现一个提交数据的测试,不过这里面有个问题,Modal dialog present,也就是下面这个帖子提到的,

http://blog.csdn.net/old_imp/article/details/11417999


也就是说,页面有些ajax效果,但是测试软件无法识别,因为在你人工去点击的时候是不会有这样的问题发生,比如你点击某个控件,然后页面出现mask,但是测试软件却傻眼了,就只能报错了。

最后只能用sleep方法解决,而WebDriverWait还是不能解决这个问题,即使我设置了不同的条件也无法通过。


总得来说,这玩意还是不错的,有使用价值,对于需要简单的自动化测试的场景,比如一个复杂模块修改完之后,就可以跑一篇,防止出现未知的或者重新出现已知的bug。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值