<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      .Net 玩自動化測試

      2013-03-21 15:07  熬夜的蟲子  閱讀(5115)  評論(1)    收藏  舉報

      源碼地址 https://github.com/dubing/YoukuAutomation


      背景

        標題看似新穎實際上這里的自動化在很大范圍內限定在web測試上,和loadrunner測試腳本類似,也都是測試工程師常用的概念。當然作為.net應用,你也可以用在產品演示上。

        我使用的背景是在持續集成、每日構建體系中的一個自動化檢查模塊。

        之所以說是30秒,是因為下面要介紹的工程確實簡單,但是想精通、從半神到大神其間的差距還是很大了。我只帶大家入門。


      工具

            selenium (官網 http://www.seleniumhq.org/

        Autoit (官網 http://www.autoitscript.com/site/


      概念

             概念性的東西大家可以自行google,這里簡單介紹掃盲下。然后介紹30秒過程。

         Selenium是ThoughtWorks公司(題外吐槽下這個公司,在軟件工程領域確實很虎啊,旗下的持續集成系統go也是相當贊的,直接放棄jenkins)開發的一套基于WEB應用的測試工具,直接運行在瀏覽器中,模擬用戶的操作。先談談selenium1,Selenium1 存在2個版本,一個叫 selenium-core, 一個叫selenium-rc 。selenium-core 是使用HTML的方式來編寫測試腳本,你也可以使用 Selenium-IDE來錄制腳本,但是目前Selenium-IDE只有 FireFox 版本。Selenium-RC 是 selenium-remote control 縮寫,是使用具體的語言來編寫測試類。selenium-rc 支持的語言非常多,c#,java,python等等。

        selenium2又可以稱為webdriver發布后,Selenium2.0有簡潔的API,WebDriver和WebElement對象,更好的抽象。且支持多中操作系統,多語言,多瀏覽器。同時Selenium2.0進行了架構的調整和升級:Selenium2.0 = Selenium1.0 + WebDriver(也就是說Selenium2.0合并了這兩個項目),所以果斷選擇后者。

         AutoIT的使用場景是在WebDriver無法獨立完成的前提下,例如flash,例如各種特殊框。它設計用于Windows GUI(圖形用戶界面)中進行自動化操作.它利用模擬鍵盤按鍵,鼠標移動和窗口/控件的組合來實現自動化任務.而這是其它語言不可能做到或無可靠方法實現的


      30秒

        如果從0開始30秒完成,主要就是上面介紹的Selenium-IDE,目前只支持Firefox。上圖

           

            第1秒-10秒

        改變base url 點擊右邊紅點 開始錄制瀏覽器行為 我在右邊找找看中 搜索“熬夜的蟲子” 點擊搜索按鈕跳轉

        

        第10秒-20秒 

        點擊右邊綠色小三角按鈕 你會發現當前的行為重讀了一遍 ok一個簡單的瀏覽器行為我們已經復制了,當然這不是我們的目的我們點擊source

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head profile="http://selenium-ide.openqa.org/profiles/test-case">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <link rel="selenium.base" href="http://www.rzrgm.cn/" />
      <title>New Test</title>
      </head>
      <body>
      <table cellpadding="1" cellspacing="1" border="1">
      <thead>
      <tr><td rowspan="1" colspan="3">New Test</td></tr>
      </thead><tbody>
      <tr>
      	<td>open</td>
      	<td>/</td>
      	<td></td>
      </tr>
      <tr>
      	<td>type</td>
      	<td>id=zzk_q</td>
      	<td>熬夜的蟲子</td>
      </tr>
      <tr>
      	<td>clickAndWait</td>
      	<td>css=input.search_btn</td>
      	<td></td>
      </tr>
      
      </tbody></table>
      </body>
      </html>
      

        自動給我們生成了一個html腳本,在選項中格式選擇c# webdrvier

        

        

        

      using System;
      using System.Text;
      using System.Text.RegularExpressions;
      using System.Threading;
      using NUnit.Framework;
      using OpenQA.Selenium;
      using OpenQA.Selenium.Firefox;
      using OpenQA.Selenium.Support.UI;
      
      namespace SeleniumTests
      {
          [TestFixture]
          public class Untitled
          {
              private IWebDriver driver;
              private StringBuilder verificationErrors;
              private string baseURL;
              private bool acceptNextAlert = true;
              
              [SetUp]
              public void SetupTest()
              {
                  driver = new FirefoxDriver();
                  baseURL = "http://www.rzrgm.cn/";
                  verificationErrors = new StringBuilder();
              }
              
              [TearDown]
              public void TeardownTest()
              {
                  try
                  {
                      driver.Quit();
                  }
                  catch (Exception)
                  {
                      // Ignore errors if unable to close the browser
                  }
                  Assert.AreEqual("", verificationErrors.ToString());
              }
              
              [Test]
              public void TheUntitledTest()
              {
                  driver.Navigate().GoToUrl(baseURL + "/");
                  driver.FindElement(By.Id("zzk_q")).Clear();
                  driver.FindElement(By.Id("zzk_q")).SendKeys("熬夜的蟲子");
                  driver.FindElement(By.CssSelector("input.search_btn")).Click();
              }
              private bool IsElementPresent(By by)
              {
                  try
                  {
                      driver.FindElement(by);
                      return true;
                  }
                  catch (NoSuchElementException)
                  {
                      return false;
                  }
              }
              
              private string CloseAlertAndGetItsText() {
                  try {
                      IAlert alert = driver.SwitchTo().Alert();
                      if (acceptNextAlert) {
                          alert.Accept();
                      } else {
                          alert.Dismiss();
                      }
                      return alert.Text;
                  } finally {
                      acceptNextAlert = true;
                  }
              }
          }
      }
      

        一個完整的test case就出來了。

        第20秒到30秒

        copy到我們項目中運行試試,很完美。

        

        當然這是最簡單的例子。想要成大神還需要掌握各種方法、了解各種api甚至是原理。

        例如用flash上傳 webdriver就很糾結了,使用autoit也是自動化非常有效的方法。針對上傳的window7系統選框,這里我給大家分享一個比較通用的腳本

      WinWait("[Class:#32770]", "", 3)
      WinActivate("[Class:#32770]")
      ControlFocus( "[Class:#32770]", "", "[CLASS:Edit; INSTANCE:1]" )
      Send("E:\xxx.avi") 
      ControlClick("[Class:#32770]", "Open(O)", "Cancel")
      Send("!O")
      Send("{ENTER}", 0)
      

        使用c#寫的話,引用組件

                           try
                          {
                              //if (fileupflag) break;
                              Thread.Sleep(1000);
                              var Autoit = new AutoItX3();
                              const string widowTitle = "[Class:#32770]";
                              Autoit.WinWait(widowTitle, "", 1);
                              Autoit.WinActivate(widowTitle);
                              Autoit.ControlFocus("[Class:#32770]", "", "[CLASS:Edit; INSTANCE:1]");
                              Autoit.Send(Filepath);
                              Autoit.Sleep(100);
                              Autoit.ControlClick("[Class:#32770]", "Open(O)", "Cancel");
                              Autoit.Sleep(100);
                              Autoit.Send("!O");
                              Autoit.Send("{ENTER}", 0);
                              //Thread.CurrentThread.Abort();
      
                          }
                          catch (Exception ex)
                          {
                              Console.WriteLine("當前捕捉失敗,繼續掃描,錯誤消息為" + ex.Message);
                          }
      

        


      題外

        頁首源碼里是一個youku上傳的demo,小而全 大家可以參考下

      主站蜘蛛池模板: JIZZJIZZ国产| 92精品国产自产在线观看481页| 国产精品午夜av福利| 亚洲午夜无码久久久久蜜臀av| 熟女人妻aⅴ一区二区三区电影| 婷婷综合久久狠狠色成人网| 69精品无人区国产一区| 漂亮的保姆hd完整版免费韩国| 熟妇人妻中文a∨无码| 扎兰屯市| 国产亚洲精品成人aa片新蒲金 | 熟女乱一区二区三区四区| av在线播放国产一区| 国产福利深夜在线播放| 少妇人妻av毛片在线看| 天天夜碰日日摸日日澡性色av| 国产精品乱码久久久久久小说| av大片在线无码免费| 日韩精品一区二区三免费| 深夜释放自己在线观看| 久久天堂综合亚洲伊人HD妓女| 熟妇人妻任你躁在线视频| 久久精品国产亚洲av麻豆小说| 亚洲国产精品美日韩久久| 国产精品剧情亚洲二区| 国产精品二区中文字幕| 亚洲第一二三区日韩国产| 丝袜老师办公室里做好紧好爽| 国产欧美日韩精品丝袜高跟鞋| 99精品久久久久久久婷婷| 中文字幕有码日韩精品| 2020国产欧洲精品网站| 中文字幕精品亚洲二区| 国产男女黄视频在线观看| 四虎亚洲国产成人久久精品| 韩国三级+mp4| 精品av综合导航| 久久一区二区中文字幕| 97亚洲熟妇自偷自拍另类图片| 亚洲成a人片77777kkkk| 亚洲日韩中文字幕在线播放|