qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          casperjs進行web功能自動化測試demo

            通過一周多的學(xué)習(xí)和總結(jié),終于掌握了casperjs用于自動化的方法,填平了大大小小的各種坑。
            casperjs是一個新興的測試框架,網(wǎng)上資料很少,基本上靠翻譯英文資料。
            貢獻出來,供大家參考:
          //page.js,存放頁面元素
          //c表示通過css選擇元素,x表示通過xpath選擇元素
          var baseurl="http://www.cnblogs.com/reach296/";
          var base={
          //首頁
          url:baseurl,
          c:{
          登錄表單:'form#login',
          登錄按鈕:'.btn'
          }
          };
          var index={
          //登錄后成功后跳轉(zhuǎn)頁
          url:baseurl+"/seven/index"
          };
          var sidebar={
          //左邊框
          url:baseurl+"/seven/sidebar.jsp",
          x:{
          應(yīng)用庫:"http://span[contains(text(),應(yīng)用庫)]",
          應(yīng)用分類:"http://ul[@class='submenu']/li/a[1]"
          }
          };
          var category_list={
          //應(yīng)用分類page
          url:baseurl+"/seven/app/category-list",
          c:{
          名稱:'td.sorting_1'
          },
          x:{
          表格:'//*[@id="sample-table-2"]/tbody/tr',
          名稱:'//*[@id="sample-table-2"]/tbody/tr/td[1]',
          海報:'//*[@id="sample-table-2"]/tbody/tr/td[2]',
          編輯:'//*[@id="sample-table-2"]/tbody/tr/td[3]'
          }
          }
          //common.js,存放全局變量和方法
          var path={
          capture:'cms/capture/',
          lib:'cms/lib/'
          };
          var cap={
          clipRect:{top: 0,left: 0,width: 1024,height: 768},
          // clipRect:{width: 1024,height:768},
          imgOptions:{format: 'jpg',quality:100}
          };
          var account={'loginName':'reachwang','passwd':'test12345'};
          function get_menu_links(){
          //獲取一級模塊
          var links = window.frames[0].document.getElementsByTagName("frame")[0].contentDocument.getElementsByClassName("menu-text");
          return Array.prototype.map.call(links, function(e) {
          return e.innerText;
          });
          };
          function get_submenu_links(){
          //獲取二級模塊
          var links = window.frames[0].document.getElementsByTagName("frame")[0].contentDocument.querySelectorAll('.submenu a');
          return Array.prototype.map.call(links, function(e) {
          return (e.innerText).replace(/(^\s*)|(\s*$)/g, "");
          });
          };
          //應(yīng)用分類測試用例,檢查應(yīng)用分類頁面是否正常展示,分類數(shù)據(jù)是否存在
          casper.test.begin('應(yīng)用分類測試用例',function suite(test) {
          casper.options.verbose = true;
          casper.options.logLevel = "debug";
          casper.options.viewportSize={width: 1024, height: 768};
          casper.options.waitTimeout=20000;
          // casper.options.clientScripts=[
          // path.lib+'common.js'
          // ];
          casper.test.comment('檢查應(yīng)用分類頁面是否正常展示,分類數(shù)據(jù)是否存在');
          casper.start(base.url, function() {
          this.echo("1、打開登錄頁面");
          test.assertHttpStatus(200,"檢查http請求狀態(tài)");
          });
          casper.waitForSelector(base.c.登錄按鈕, function() {
          this.echo("2、登錄頁面截圖");
          this.capture(path.capture+"登錄頁面.jpg",cap.clipRect, cap.imgOptions);
          });
          casper.then(function() {
          this.echo("3、登錄頁面檢查");
          test.assertTitle("TCL CMS", "標(biāo)題正確");
          test.assertExists(base.c.登錄表單, "帳號登錄表單存在");
          this.echo("4、輸入帳號和密碼");
          this.fill(base.c.登錄表單, account, true);
          this.echo("5、點擊登錄按鈕");
          test.assertExists(base.c.登錄按鈕, "登錄按鈕存在");
          this.mouse.click(base.c.登錄按鈕);
          });
          casper.waitForUrl(index.url,function(){
          test.assertHttpStatus(200,"跳轉(zhuǎn)到登錄完成頁");
          this.capture(path.capture+'跳轉(zhuǎn)到登錄完成頁.jpg',cap.clipRect, cap.imgOptions);
          });
          casper.withFrame(0,function(){
          this.echo("切換到mian frame里");
          casper.withFrame(0,function(){
          this.echo("切換到mian frame下的sider frame里");
          this.echo("6、點擊應(yīng)用庫");
          this.click({type: 'xpath',path:sidebar.x.應(yīng)用庫});
          this.echo("7、點擊應(yīng)用分類");
          this.click({type: 'xpath',path:sidebar.x.應(yīng)用分類});
          });
          });
          casper.waitForUrl(index.url,function(){
          test.assertHttpStatus(200,"跳轉(zhuǎn)到應(yīng)用分類頁");
          this.capture(path.capture+'打開應(yīng)用分類.jpg',cap.clipRect, cap.imgOptions);
          });
          casper.withFrame(0,function(){
          this.echo("切換到mian frame里");
          casper.withFrame(1,function(){
          this.echo("應(yīng)用分類頁面")
          test.assertExists({type: 'xpath',path:category_list.x.表格},"表格檢查");
          test.assertExists(category_list.c.名稱,"名稱字段檢查");
          test.assertExists({type: 'xpath',path:category_list.x.海報},"海報字段檢查");
          test.assertExists({type: 'xpath',path:category_list.x.編輯},"編輯字段檢查");
          });
          });
          casper.run(function() {
          test.done();
          });
          });

          posted on 2014-06-25 11:28 順其自然EVO 閱讀(1223) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學(xué)習(xí)

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 马龙县| 内江市| 江孜县| 吉木萨尔县| 乐都县| 盐源县| 集贤县| 陇西县| 通河县| 南京市| 江永县| 墨江| 漠河县| 宣恩县| 酒泉市| 武邑县| 望江县| 江陵县| 响水县| 昌平区| 阿图什市| 宝鸡市| 宁明县| 灵山县| 上栗县| 平顺县| 阿合奇县| 临夏县| 龙陵县| 平湖市| 玛纳斯县| 石城县| 靖西县| 霍城县| 贵溪市| 遂平县| 中卫市| 松桃| 永康市| 安泽县| 大足县|