惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

博客园 - 黃偉榮

Web Project的檔案共用小技巧 IoC的中繼器:CommonServiceLocator UTF8Encoding與BOM Temporary Post Used For Theme Detection (d4b0aefa-c88e-4957-bba7-b367d1bfa042 - 3bfe001a-32de-4114-a6b4-4005b770f6d7) Visual Studio 2010 Feature Packs 2之Silverlight自動化測試 Moles - Isolation framework for .NET(假.Net)介紹 [小技巧]Entity Framework強型別Include C#仿Oracle Decode,將ValueType對應成String - 黃偉榮 - 博客园 Visual Studio 單元測試的3種Initialize與Cleanup jQuery套件-檢查頁面的欄位是否有變更 用EventLogReader查詢特殊EventLog jQuery自製Plugin-Bind事件函式時檢查有沒有Bind過 ASP.NET MVC TempData使用心得 Visual Stuiod 自訂檔案比較合并工具 [小技巧]自動化測試時NLog的訊息輸出到測試結果中 小技巧:專案切換32與64位元組件 Linq小技巧:日期處理 Unit Test小技巧 : DateTime的Stub 解決TFS Build Asp.Net Mvc開啟MvcBuildViews後無法載入組件問題
寫CodedUI時如何尋找控制項的小技巧
黃偉榮 · 2010-11-26 · via 博客园 - 黃偉榮

在用CodedUI寫自動化測試時,我不喜歡用工具產生的代碼(相關資訊可參考手工製Coded UI Test(Visual Studio 2010新的UI自動化測試)),寫久了有一些經驗,例如找到控制項的一些的小技巧。

工具

尋找控制項我也是用Visual Studio 2010內建的CodedUITestBuilder.exe,不過一般的情況下CodedUITestBuilder.exe必需搭配測試專案的UIMap.uitest使用,有點麻煩,不過還好它有提供獨立執行的方法。

CodedUITestBuilder.exe的執行畫面

圖1 CodedUITestBuilder.exe的執行畫面

在CMD中下

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\CodedUITestBuilder.exe" /standAlone

多一個參數/standAlone就可以單獨執行,也加入Visual Studio的External Tools中,方便日常的呼叫。

External Tools視窗

圖二 External Tools視窗

尋找控制項

使用CodedUITestBuilder的UIMap功能,使用的方式有二種。

  1. 按下 Windows key + U,會自動選取到游標所在的控制項,適用在不方便滑鼠拖曳的情況下
  2. 滑鼠拖曳下圖紅色框中的Icon,到控制項上方

拖曳用的Icon

圖三 拖曳用的Icon

選到控制項的晝面

圖四 選到控制項的晝面

選擇到控制項後,會出現控制項的說明視窗,裡面有控制項的各個屬性值與階層,可以用來做為寫CodedUI的搜尋條件。

控制項的說明視窗

圖五 控制項的說明視窗

像Name=q,Code就可以這樣寫

//假設已經開啟了IE且網址在www.google.com上
BrowserWindow window = BrowserWindow.Locate("Google");            

HtmlEdit input = new HtmlEdit(window);
input.SearchProperties[HtmlEdit.PropertyNames.Name] = "q";
input.Text = "黃偉榮";

控制項視窗的屬性值,都可以做為搜尋條件

圖六 控制項視窗的屬性值,都可以做為搜尋條件

階層問題

之前有遇到問題,條件都下對,就是找不到控制項,後來發現可能是階層問題,可以試著一層一層的去找到控制項。

控制項都可以將父視窗傳進去,然後可以只搜尋子控制項

圖七 控制項都可以將父視窗傳進去,然後可以只搜尋子控制項

NOTE:

如果嘗試幾次都失敗,可以叫出產生器,去看產生的CodedUI是如何去找到控制項。