在<b>使用vs2010的codedui來做自己的自動化測試架構</b>中我介紹過,我将使用ironruby來編寫自動化測試腳本,由于對ironruby不熟悉,在開發中遇到過一些問題。我對這些問題之前也進行了blog分享,本篇我将給大家介紹一下如何使用ironruby和codedui提高的自動化測試類庫來編寫我們自己的自動化測試腳本,後期會在<b>openexpressapp</b>主題中再介紹編寫opentest.ui的一些過程,感興趣的可以關注下。
.net framework 4
codedui自動化相關測試類庫放置在<b> microsoft visual studio 10.0\common7\ide\privateassemblies\</b> 檔案夾中,具體每個程式集的内容我并不是很清楚,有對微軟自動化測試架構感興趣的可以去看看下,我現在還用不到就不研究了:)

這裡假定我們放到目錄<b>d:/gzj/openexpressapp/tool/opentest/dll</b>
這裡我們拿一個大家都知道的window自帶的記事本來做測試,路徑為:c:/windows/system32/calc.exe
由于查找button等功能可以複用,編寫幾個函數:
view sourceprint?
<code>01</code>
<code>def</code> <code>window(title)</code>
<code>02</code>
<code> </code><code>win = winwindow.</code><code>new</code>
<code>03</code>
<code> </code><code>win.searchproperties[</code><code>"name"</code><code>] = title</code>
<code>04</code>
<code> </code><code>win</code>
<code>05</code>
<code>end</code>
<code>06</code>
<code> </code>
<code>07</code>
<code>def</code> <code>button(parent, title)</code>
<code>08</code>
<code> </code><code>btn = winbutton.</code><code>new</code><code>(parent);</code>
<code>09</code>
<code> </code><code>btn.searchproperties[</code><code>"name"</code><code>] = title</code>
<code>10</code>
<code> </code><code>btn</code>
<code>11</code>
<code>$load_path</code> <code><<</code><code>'d:/gzj/openexpressapp/tool/opentest/dll'</code>
<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.dll"</code>
<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.ie.dll"</code>
<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.ie.communication.interop.dll"</code>
<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.msaa.dll"</code>
<code>require</code><code>"microsoft.visualstudio.testtools.uitest.extension.uia.dll"</code>
<code>require</code><code>"microsoft.visualstudio.testtools.uitest.framework.dll"</code>
<code>require</code><code>"microsoft.visualstudio.testtools.uitesting.dll"</code>
<code>require</code><code>"microsoft.visualstudio.testtools.uitest.playback.dll"</code>
<code>12</code>
<code>include microsoft::visualstudio::testtools::uitesting</code>
<code>13</code>
<code>include microsoft::visualstudio::testtools::uitesting::wincontrols</code>
<code>14</code>
<code>15</code>
<code>16</code>
<code>17</code>
<code>18</code>
<code>19</code>
<code>20</code>
<code>21</code>
<code>22</code>
<code>23</code>
<code>24</code>
<code>25</code>
<code>26</code>
<code>27</code>
<code>playback.initialize() #注意必須加這句,不然提示playback的錯誤</code>
<code>28</code>
<code>29</code>
<code>app = applicationundertest.launch(</code><code>'c:/windows/system32/calc.exe'</code><code>)</code>
<code>30</code>
<code>31</code>
<code>calc_window = window(</code><code>"電腦"</code><code>)</code>
<code>32</code>
<code>btn_1 = button(calc_window,</code><code>"1"</code><code>)</code>
<code>33</code>
<code>btn_2 = button(calc_window,</code><code>"2"</code><code>)</code>
<code>34</code>
<code>btn_add = button(calc_window,</code><code>"+"</code><code>)</code>
<code>35</code>
<code>btn_equal = button(calc_window,</code><code>"="</code><code>)</code>
<code>36</code>
<code>btn_value = winedit.</code><code>new</code><code>(calc_window)</code>
<code>37</code>
<code>38</code>
<code>mouse.click btn_1</code>
<code>39</code>
<code>mouse.click btn_add</code>
<code>40</code>
<code>mouse.click btn_2</code>
<code>41</code>
<code>mouse.click btn_equal</code>
<code>42</code>
<code>puts</code><code>"1+2=3:太高科技了,電腦算對了"</code> <code>if</code> <code>btn_value.text.to_i ==</code><code>3</code>
<code>43</code>
<code>44</code>
<code>45</code>
<code>keyboard.sendkeys(</code><code>"c"</code><code>);</code>
<code>46</code>
<code>keyboard.sendkeys(</code><code>"2"</code><code>);</code>
<code>47</code>
<code>keyboard.sendkeys(</code><code>"*"</code><code>);</code>
<code>48</code>
<code>49</code>
<code>keyboard.sendkeys(</code><code>"."</code><code>);</code>
<code>50</code>
<code>51</code>
<code>keyboard.sendkeys(</code><code>"{enter}"</code><code>);</code>
<code>52</code>
<code>puts</code><code>"2*2.2=4.4:受不了了,連小數和乘法都會了"</code> <code>if</code> <code>btn_value.text.to_f ==</code><code>4</code><code>.</code><code>4</code>
<code>53</code>
<code>54</code>
<code>app.close</code>
<code>55</code>
<code>56</code>
<code>playback.cleanup()</code>
運作後你可以看到,代碼會把電腦打開,然後根據腳本編寫意圖點選和按鍵,最終輸出結果。
在netbeans下檢視測試結果:
在dos視窗輸出是亂碼,不知道有誰知道如何更改這個視窗的字元編碼?
檔案使用utf-8或者utf8 without bom格式
必須調用playback.initialize()
codeui的dll必須引用完整
ironruby - 快速在半小時學習ruby基礎知識
ironruby - 檔案編碼惹的禍
ironruby - 使用netbeans編寫ironruby代碼
ironruby - 怎麼就沒有好用的ide呢??
ironruby - 如何在vs2010下調試ironruby代碼
使用vs2010的codedui來做自己的自動化測試架構
以上代碼下載下傳:http://files.cnblogs.com/zhoujg/testcalc-ruby.net4.rar
<b>歡迎轉載,轉載請注明:轉載自</b><b>周金根 [ http://zhoujg.cnblogs.com/ ]</b>