<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jaunty@软件测试，音乐，还有不一样的生活 &#187; QTP</title>
	<atom:link href="http://jaunty.me/blog/tag/qtp/feed/" rel="self" type="application/rss+xml" />
	<link>http://jaunty.me/blog</link>
	<description>软件测试，自动化测试，QTP，Loadrunner，Java，软件开发，性能测试，开源</description>
	<lastBuildDate>Mon, 25 Jul 2011 16:43:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>这两天QTP出错记录</title>
		<link>http://jaunty.me/blog/2009/02/qtp_error_recor/</link>
		<comments>http://jaunty.me/blog/2009/02/qtp_error_recor/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 16:27:19 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[自动化测试]]></category>
		<category><![CDATA[Automation Test Framework]]></category>
		<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=100</guid>
		<description><![CDATA[1. 作关键字驱动脚本的一个小试验 Browser(“Find a Flight: Mercury”).Sync Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebRadioGroup(“tripType”).Select “oneway” Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“passCount”).Select “1&#8243; Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“fromPort”).Select “London” Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“fromMonth”).Select “March” Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“fromDay”).Select “27&#8243; Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“toPort”).Select “New York” [...]]]></description>
			<content:encoded><![CDATA[<p>1. 作关键字驱动脚本的一个小试验</p>
<p>Browser(“Find a Flight: Mercury”).Sync<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebRadioGroup(“tripType”).Select “oneway”<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“passCount”).Select “1&#8243;<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“fromPort”).Select “London”<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“fromMonth”).Select “March”<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“fromDay”).Select “27&#8243;<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“toPort”).Select “New York”<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“toMonth”).Select “April”<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“toDay”).Select “21&#8243;<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebRadioGroup(“servClass”).Select “First”<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).WebList(“airline”).Select “No Preference”<br />
Browser(“Find a Flight: Mercury”).Page(“Find a Flight: Mercury”).Image(“findFlights”).Click</p>
<p> </p>
<p><span id="more-100"></span></p>
<p>第2行后面“oneway” 第一次写成“Oneway”了<br />
注意大小写敏感<br />
出错信息是 没有包含在Object‘s  item collection。</p>
<p>2. 作基本的脚本录制回放<br />
Browser(“Welcome: Mercury Tours”).Page(“Welcome: Mercury Tours”).Sync<br />
Browser(“Welcome: Mercury Tours”).Page(“Welcome: Mercury Tours”).WebEdit(“userName”).Set “jaunty”<br />
Browser(“Welcome: Mercury Tours”).Page(“Welcome: Mercury Tours”).WebEdit(“password”).SetSecure “47cd03a82c95a6103581c815c580052e1720fdfd”<br />
Browser(“Welcome: Mercury Tours”).Page(“Welcome: Mercury Tours”).Image(“Sign-In”).Click 10,2</p>
<p>第一行Browser的语句，第一次没有给加载页面的过程加同步点 因为想着第一次 页面load 不需要做前提条件。<br />
后来回放的时候 WebEdit对象“userName” 一直对象disabled.<br />
个人猜测是由于机器太慢load太久 但测试步骤已经开始导致<br />
加入同步点解决。</p>
<p>（页面加载过程也需要同步点。。。汗。。。）<br />
后来在windowsForm程序 开始Launcher的时候 也需要加入同步点，第一次回访出现对象disabled问题<br />
加入同步点后解决。</p>
<p> </p>
<p> </p>
<p>3. 描述性编程小实验<br />
Dialog(“Login”).WinEdit(“Agent Name:”).Set “jaunty”<br />
Dialog(“Login”).WinEdit(“Password:”).SetSecure “47d888b608eeba747a9be67b7464720d04f7e08e”<br />
Dialog(“Login”).WinObject(“nativeclass:=Button”, “text:=OK”).Click<br />
Window(“Flight Reservation”).WinMenu(“Menu”).Select “File;Exit”</p>
<p>第三行，第一次忘记在两个属性之间加入空格，导致执行第三行的时候 QTP无法识别下来的动作。无错误信息，就是执行不到下一步！</p>
<p>加入空格解决。</p>
<p> </p>
<p>4. 脚本运行前对待测程序的保证</p>
<p>If not Dialog(“Login”).Exist Then<br />
 SystemUtil.Run “C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe”<br />
End If</p>
<p>当然最一开始要加入一个语句判断一下所要操作的Object打开了没有。没有的话要打开</p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2009/02/qtp_error_recor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QTP执行过程对抛出窗口录入的密码的加密和录入的数据的获得</title>
		<link>http://jaunty.me/blog/2009/02/qtp_password-windows_mask/</link>
		<comments>http://jaunty.me/blog/2009/02/qtp_password-windows_mask/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 16:20:19 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[自动化测试]]></category>
		<category><![CDATA[Automation Test Framework]]></category>
		<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=94</guid>
		<description><![CDATA[有这样一种需求，就是在QTP回放的过程中需要抛出一个录入框，操作者录入的密码显示是加密的（*****的样子），但是要能在后面的脚本获取操作者输入的数据。 可能很多人要问，自动化的过程为什么要人去输入操作。   这里先把这个问题的前提阐述一下： 我们的脚本是全球共享的，每个tester都有自己的用户名密码 去访问那个脚本 所以在access脚本的前面就需要QTP 弹出一个交互的对话框让tester去登陆才能access到 脚本的专署的信息，却又不能看到其他人的信息。 经过核查QTP 目前没有发现可以加密的函数，vbs也没有内置的function来提供这种功能。 所以结决方案的思路就是调用IE来create masked对话框 代码如下： 只需要copy到QTP的专家视图，直接run就可以了（也可单独保存为VBS文件运行） strPw = GetPassword( “Please enter your password:” )51Testing软件测试网:z d P7]J msgbox strPw 51Testing软件测试网.o/wtxrp2X(f4O7l Function GetPassword( myPrompt ) Dim objIE51Testing软件测试网4x,j? v8S^ &#8216; Create an IE object51Testing软件测试网,eghGE1x Set ōbjIE = CreateObject( “InternetExplorer.Application” )51Testing软件测试网w!\&#8217;M”N8\Y VSd &#8216; specify some of the IE window&#8217;s settings51Testing软件测试网$Hx^Vu_ [...]]]></description>
			<content:encoded><![CDATA[<p>有这样一种需求，就是在<a onclick="tagshow(event, 'QTP');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #000066;">QTP</span></strong></span></a>回放的过程中需要抛出一个录入框，操作者录入的密码显示是<a onclick="tagshow(event, '%BC%D3%C3%DC');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #000066;">加密</span></strong></span></a>的（*****的样子），但是要能在后面的脚本获取操作者输入的数据。</p>
<p>可能很多人要问，<a onclick="tagshow(event, '%D7%D4%B6%AF%BB%AF');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #000066;">自动化</span></strong></span></a>的过程为什么要人去输入操作。</p>
<p> </p>
<p>这里先把这个问题的前提阐述一下：</p>
<p>我们的脚本是全球共享的，每个tester都有自己的用户名密码 去访问那个脚本 所以在access脚本的前面就需要QTP 弹出一个交互的对话框让tester去登陆才能access到 脚本的专署的信息，却又不能看到<a onclick="tagshow(event, '%C6%E4%CB%FB');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #000066;">其他</span></strong></span></a>人的信息。</p>
<p>经过核查QTP 目前没有发现可以加密的函数，vbs也没有内置的function来提供这种功能。</p>
<p>所以结决方案的思路就是调用IE来create masked对话框</p>
<p>代码如下： 只需要copy到QTP的专家视图，直接run就可以了（也可单独保存为VBS文件运行）</p>
<p><span id="more-94"></span></p>
<div>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">strPw = GetPassword( “Please enter your password:” )<span style="display: none;">51Testing软件测试网:z d P7]J</span><br />
msgbox strPw</span></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;"><span style="display: none;">51Testing软件测试网.o/wtxrp2X(f4O7l</span><br />
Function GetPassword( myPrompt )</span></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">Dim objIE<span style="display: none;">51Testing软件测试网4x,j? v8S^</span><br />
&#8216; Create an IE object<span style="display: none;">51Testing软件测试网,eghGE1x</span><br />
Set ōbjIE = CreateObject( “InternetExplorer.Application” )<span style="display: none;">51Testing软件测试网w!\&#8217;M”N8\Y VSd</span><br />
&#8216; specify some of the IE window&#8217;s settings<span style="display: none;">51Testing软件测试网$Hx^Vu_</span><br />
objIE.Navigate “about:blank”<span style="display: none;">51Testing软件测试网8v/d8S ](@^7~</span><br />
objIE.Document.Title = “Password”<span style="display: none;">51Testing软件测试网3@4^#{.}#hT,v*vp</span><br />
objIE.ToolBar = False<br />
<span style="display: none;">+j3~.X6Y5H21468</span>objIE.Resizable = False<span style="display: none;">51Testing软件测试网E iX _ {4X n/~w”L</span><br />
objIE.StatusBar = False<br />
<span style="display: none;">$~Y7w9d,h4~21468</span>objIE.Width = 320<br />
<span style="display: none;">A7p(~j5PW%h+X21468</span>objIE.Height = 180</span></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">Do While objIE.Busy<span style="display: none;">51Testing软件测试网 OqM%d\%h</span><br />
<span style="display: none;">51Testing软件测试网A*Y,o!H]m%y</span><br />
Loop<span style="display: none;">51Testing软件测试网Ctt/p*Q+U4F_</span><br />
&#8216; Insert the HTML code to prompt for a password<br />
<span style="display: none;">!~*H%yEh21468</span>objIE.Document.Body.InnerHTML = “&lt;DIV align=”"center”"&gt;&lt;P&gt;” &amp; myPrompt _<span style="display: none;">51Testing软件测试网;hTg3}Z.o2N</span><br />
&amp; “&lt;/P&gt;” &amp; vbCrLf _<span style="display: none;">51Testing软件测试网8?d%s E(G+d8K9|j8?</span><br />
&amp; “&lt;P&gt;&lt;INPUT TYPE=”"password”" SIZE=”"20&#8243;” ” _<br />
<span style="display: none;">O?W9{9q2o Pm*@B21468</span>&amp; “ID=”"Password”"&gt;&lt;/P&gt;” &amp; vbCrLf _<span style="display: none;">51Testing软件测试网j{sj+E:c6b</span><br />
&amp; “&lt;P&gt;&lt;INPUT TYPE=”"hidden”" ID=”"OK”" ” _<br />
<span style="display: none;">0t,jR ]n”[:j21468</span>&amp; "NAME=""OK"" VALUE=""0""&gt;" _<br />
<span style="display: none;">r+uOi/H'B5t/Xh@a8X21468</span>&amp; "&lt;INPUT TYPE=""submit"" VALUE="" OK "" " _<br />
<span style="display: none;">\+t0q-~o(R-t21468</span>&amp; "OnClick=""VBscrīpt:OK.Value=1""&gt;&lt;/P&gt;&lt;/DIV&gt;"<span style="display: none;">51Testing软件测试网\%@LH/I"~3^EY&amp;]</span><br />
&#8216; Make the window visible<br />
<span style="display: none;">+R` `s(P L+P5l_21468</span>objIE.Visible = True<br />
<span style="display: none;">eRIS}L-ckn21468</span>&#8216; Wait till the OK button has been clicked<span style="display: none;">51Testing软件测试网8b~S s*I^ qu%v</span><br />
Do While objIE.Document.All.OK.Value = 0</span></span></p>
</div>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">Loop</span></span><span style="display: none;">51Testing软件测试网3D{8C2] wN$v5o</span><br />
<span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">&#8216; Read the password from the dialog window<br />
<span style="display: none;">,Zp&amp;Um@7?e?A21468</span>GetPassword = objIE.Document.All.Password.Value<span style="display: none;">51Testing软件测试网0~N6nc&amp;`”N%t J(Cs(T</span><br />
&#8216; Close and release the object<span style="display: none;">51Testing软件测试网~5u B3F.Ef</span><br />
objIE.Quit<br />
<span style="display: none;">o-GXZkl#El21468</span>Set ōbjIE = Nothing<br />
<span style="display: none;">Owl.m9| H9e21468</span>End Function</span></span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">参考信息：</span></span></p>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000066; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;"><a href="http://www.microsoft.com/technet/scrīptcenter/resources/qanda/feb05/hey0204.mspx">http://www.microsoft.com/technet/scrīptcenter/resources/qanda/feb05/hey0204.mspx</a></span></span></p>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></span></p>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">另外</span></span></p>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;">（1）如果在正常的情况下需要加密密码，QTP提供password encoder 可以generate 出加密后的string。</span></span></p>
<p class="MsoNormal"><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"><span style="font-size: 8pt; color: black; font-family: Tahoma;"><span class="035495209-05062008"><span style="color: #000000;">（2） 显示密码信息</span></span></span></span></p>
<p class="MsoNormal">
<div></div>
<p><span style="font-size: xx-small; color: #000000; font-family: Tahoma;"></p>
<p class="MsoNormal"><span style="font-size: 8pt; color: black; font-family: Tahoma;"><span class="035495209-05062008"><span style="color: #000000;"> 抓取密码</span></span></span></p>
<p></span></p>
<p> <span style="color: #0000ff;"> getROProperty(&lt;Object Property the Stores the Password&gt;)</span> &#8230;ie try <span style="color: #0000ff;">getROProperty(“Password”)</span></p>
<div><span class="035495209-05062008"><span style="color: #000000;">显示信息</span></span></div>
<div><span class="035495209-05062008">       </span><span style="font-size: 10pt; color: #15326b; font-family: 'Courier New';" lang="EN-GB"><span style="color: #0000ff; font-family: Arial;">MsgBox </span></span></div>
<div><span style="font-size: 10pt; color: #15326b; font-family: 'Courier New';" lang="EN-GB"><span style="color: #000000; font-family: Arial;">（3）对某些列进行掩盖：</span></span></div>
<div><span style="font-size: 10pt; color: #15326b; font-family: 'Courier New';" lang="EN-GB"><span style="color: #000000;">Browser(“Browser”).Page(“Webpage”).WebEdit(“txtPassword”).<strong><em>SetSecure</em></strong> (“User password”)</span></span></div>
<div><span style="font-size: 10pt; color: #15326b; font-family: 'Courier New';" lang="EN-GB"></span> </div>
<p class="MsoNormal">
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2009/02/qtp_password-windows_mask/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

