<?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>IT公司面试手册 &#187; QTP</title>
	<atom:link href="http://www.mianwww.com/html/category/it-interview/qtp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mianwww.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 11:48:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>QTP如何判断对象是否存在</title>
		<link>http://www.mianwww.com/html/2012/02/13053.html</link>
		<comments>http://www.mianwww.com/html/2012/02/13053.html#comments</comments>
		<pubDate>Sat, 04 Feb 2012 15:01:14 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=13053</guid>
		<description><![CDATA[1. 判断getElementById("")获取的对象存不存在 方法一：可以通过错误处理来实现 On Error Resume Next getElementById("")的操作 (注意：如果是用set obj = object. getElementById("") 时，即使 object. getElementById("") 为空，也会返回一个nothing值，因此，Err.Number会等于0。因此如果是直接判断对象的话，还需要和 is nothing配合使用。) （而如果直接是对象的相关操作的话，就不用和is nothing结合使用了。如使用value = object. getElementById("") 如果对象不存在，Err.Number就会不等于零了，因此可以直接判断了。 ） On Error GoTo 0 If Err.Number &#60;&#62; 0 Then 处理 Err.Clear End If 方法二：用is nothing来判断 注意，不能用is not nothing，否则如果对象为空则会报错。 If object. getElementById("") is nothing Then 处理 End If 方法三：用Err 和is [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2012/02/13053.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>qtp web 下拉列表值如何获取</title>
		<link>http://www.mianwww.com/html/2012/02/13049.html</link>
		<comments>http://www.mianwww.com/html/2012/02/13049.html#comments</comments>
		<pubDate>Sat, 04 Feb 2012 14:59:39 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=13049</guid>
		<description><![CDATA[&#8216;登录系统 Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX系统&#8221;).WebEdit(&#8220;userName&#8221;).Set &#8220;admin&#8221; Browser(&#8220;XXX系统_2&#8243;).Page(&#8220;XXX系统&#8221;).WebEdit(&#8220;userPassword&#8221;).SetSecure &#8220;4f0d22267b85eb28c9555f89ef0ade75a82e&#8221; Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX系统&#8221;).WebButton(&#8220;登 录&#8221;).Click &#8216;随机数 Function GetList(i) Randomize GetList=RandomNumber(0,i) End Function For i=1 to datatable.GetSheet(&#8220;Action1&#8243;).getrowcount Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;leftFrame&#8221;).Link(&#8220;XXX管理&#8221;).Click Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;mainFrame&#8221;).WebButton(&#8220;添加XXX&#8221;).Click Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;mainFrame_2&#8243;).WebEdit(&#8220;repositoryTitle&#8221;).Set DataTable(&#8220;keyftitle&#8221;, dtLocalSheet) Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;mainFrame_2&#8243;).WebEdit(&#8220;repositorySubTitle&#8221;).Set DataTable(&#8220;keyctitle&#8221;, dtLocalSheet) &#8216;获取下拉列表值，与C/S结构不一样 Dim stcount,stnum,rel,stobj set stobj=Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;mainFrame_2&#8243;).WebList(&#8220;repositoryTypeID&#8221;).Object stcount=stobj.options.length stnum=GetList(stcount-1) rel=stobj.options.item(stnum).text Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;mainFrame_2&#8243;).WebList(&#8220;repositoryTypeID&#8221;).Select rel &#8216;获取下拉列表值，与C/S结构不一样 Dim stcount2,stnum2,rel2,stobj2 set stobj2=Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;mainFrame_2&#8243;).WebList(&#8220;repositorySytleID&#8221;).Object stcount2=stobj2.options.length stnum2=GetList(stcount2-1) rel2=stobj2.options.item(stnum2).text Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;mainFrame_2&#8243;).WebList(&#8220;repositorySytleID&#8221;).Select rel2 Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Frame(&#8220;mainFrame_2&#8243;).WebButton(&#8220;提交&#8221;).Click Browser(&#8220;XXX系统&#8221;).Page(&#8220;XXX平台&#8221;).Sync datatable.GetSheet(&#8220;Action1&#8243;).setnextrow Next Browser(&#8220;XXX系统&#8221;).Close]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2012/02/13049.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>qtp功能自动化测试的三种录制模式都是什么？</title>
		<link>http://www.mianwww.com/html/2011/11/12200.html</link>
		<comments>http://www.mianwww.com/html/2011/11/12200.html#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:45:07 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12200</guid>
		<description><![CDATA[QTP中有三种录制模式：正常录制、模拟录制、低级录制 1. 正常录制模式是QTP默认的录制模式，这种录制模式是直接对对象的操作，录制完之后，不管再次打开的对象位置在哪，它都能执行到。录制方式为&#8211;直接从automation->record或按F3录制； 2. Analog recording(模拟录制)是对鼠标和键盘的精确操作的录制，用来录制正常录制模式不能录制到的动作，比如说录制一个鼠标拖动的动作，正常录制模式录不下来，这时就可以使用模拟录制模式。录制方式为：&#8211;从automation->record或按F3，然后再按 automation->Analog recording 或鼠标的小按钮； 3. low-level recording(低级录制)模式用来录制 QTP不能识别的环境或对象。它录制鼠标及键盘的所有操作，对对象的位置要求非常严格，如果对象的坐标有一点改变就有可以录制失败。录制方式：&#8211;从 automation->record或按F3，然后再按 automation->low level recording 或指针箭头的小按钮； 模拟录制模式分为两种：一种是相对于指定窗口录制；另一种是相对于屏幕录制。 相对于指定窗口录制&#8212;如果对其执行操作的对象位于一个窗口内部而且该窗口在模拟录制会话期间没有移动。这可以确保在运行会话过程中，QuickTest将准确地标识在其上执行模拟步骤的窗口位置，即使当您运行模拟步骤时窗口位于不同的位置。QuickTest不会录制在指定窗口外部执行的任何单击或鼠标移动。当使用这种模式时，QuickTest不会捕获任何Active Screen图像. 相对于屏幕录制-如果在其上录制模拟步骤的窗口在录制过程中移动，或者您所执行的操作是针对位于多个窗口内的对象。这可能包括将对象从一个窗口拖放到另一个窗口中。当使用这种模式时，QuickTest将捕获您在其中进行录制的窗口的最终状态的Active Screen图像。 使用“模拟录制”录制的步骤被保存在单独的数据文件中。该文件与在其中录制模拟步骤的操作或组件一起存储。 当以“模拟录制”模式进行录制时，QuickTest将向测试或组件添加一个调用所录制的模拟文件的“RunAnalog”语句。相应的Active Screen将显示在模拟录制会话期间执行的最后一个模拟步骤的结果。 low-level recording(低级录制) 使用“低级录制”在不受QuickTest支持的环境或对象上进行录制。当您需要在应用程序屏幕上录制操作的精确位置时，请使用“低级录制”。当以正常模式录制时，QuickTest将在对象上执行步骤，即使该对象已经移动到屏幕上的新位置。如果对象的位置对于您的测试或组件非常重要，请切换到“低级录制”以使QuickTest能够按照屏幕上的x坐标和y坐标录制该对象。这样，该步骤只有在对象位于正确的位置时才能通过。 当使用“低级录制”时，QuickTest将所有父类对象录制为Windows测试对象，将所有其他对象录制为WinObject测试对象。它们在Active Screen中显示为标准Windows对象。“低级录制”对每个测试对象支持下列方法： WinObject测试对象- Click、DblClick、Drag、Drop、Type Window测试对象- Click、DblClick、Drag、Drop、Type、Activate、Minimize、Restore、Maximize 以“低级录制”模式录制的每个步骤都显示在关键字视图和专家视图中。（“模拟录制”仅录制关键字视图中那个调用外部模拟数据文件的步骤。） 模拟录制和低级录制的规则 模拟录制和低级录制产生的脚本无法插入检查点，而且应用程序界面稍有变动则脚本无法正常运行，所以非万不得已（QTP正常支持的B/S结构以外的情况）应该避免这两种录制方式。有时候因为无法正常录制或者无法正常运行，初学者就可能考虑使用这两种方式录制，事实上，只要是C/S（其实部分结构简单一点的B/S）结构，基本上都能够避免所遇到的这些问题，具体方法，参见第二部分。 当选择“模拟录制”或“低级录制”时，请考虑下列规则： 只有当QuickTest的正常录制模式不能准确录制您的操作时，才应使用“模拟录制”或“低级录制”。“模拟录制”和“低级录制”要求比正常录制模式更多的磁盘空间。对于特定的步骤，您可以在录制会话期间切换到“模拟录制”或“低级录制”。在以“模拟录制”或“低级录制”模式录制了必要的步骤之后，就可以返回到正常录制模式来完成录制会话的其余部分.]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/11/12200.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何编写一份完整的qtp自动化测试方案?</title>
		<link>http://www.mianwww.com/html/2011/11/12198.html</link>
		<comments>http://www.mianwww.com/html/2011/11/12198.html#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:37:28 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12198</guid>
		<description><![CDATA[1. 编写一个QTP 脚本框架,采用数据驱动方法运行脚本. 脚本分成两类,一类是基础功能测试脚本(验证各个模块的基本功能)；另一类是业务流程功能测试脚本.(按照业务逻辑,测试相关模块的功能) 因为是采用描述性编程搭建脚本框架 所以和测试工具本身测试对象库没有依赖关系.也无需要相关Action的设置,框架可以完成想要的各种流程步骤. 2. 分离测试动作和测试数据, 尽可能的将脚本进行复用. 在开发基础功能脚本时,每个事件所用到的数据都要设计的合理,便于业务流脚本进行复用.同时编写各个事件流时,简要描述该事件所执行的动作是什么. 3. 在完成脚本开发后,由于某些脚本需要相应的环境设置..因此需要写一份文档, 简要描述,运行某些脚本时,需要相应的哪些环境配置. 4. 通过列表的形式理出页面清单作为自动化测试脚本的自查表,统计,查看脚本覆盖了当前系统哪些页面.并可 并作为测试报告中的一部分,供后续版本工作时,作为经验和教训.]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/11/12198.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QTP面试题</title>
		<link>http://www.mianwww.com/html/2011/11/12137.html</link>
		<comments>http://www.mianwww.com/html/2011/11/12137.html#comments</comments>
		<pubDate>Sun, 20 Nov 2011 11:50:47 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12137</guid>
		<description><![CDATA[1、value输出格式：；结果保存在那个文件夹里？ 2、两种运行模式是什么？若两者均可运行需要安装windows的什么插件 3、更新窗口的命令 4、call to existing action 与call to copy  of action的区别 5、对象放在什么地方，如何查看对象属性 6、调试脚本的快捷键是： 7、录制悬浮菜单时如何处理？ 8、为什么进行自动化测试]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/11/12137.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QTP链接数据库脚本</title>
		<link>http://www.mianwww.com/html/2011/11/11925.html</link>
		<comments>http://www.mianwww.com/html/2011/11/11925.html#comments</comments>
		<pubDate>Mon, 14 Nov 2011 12:23:02 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=11925</guid>
		<description><![CDATA[例:Dim res,cmd,sql Set Res=createobject(&#8220;adodb.recordset&#8221;) Set Cmd=createobject(&#8220;adodb.command&#8221;) Cmd.activeconnection=&#8221;Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142&#8243;　　＇这句话是连接数据库的数据源，要做修改 Cmd.CommandType = 1 sql=&#8221;selec t * from 表 where name=username&#8221; Cmd.CommandText = sql Set res = Cmd.Execute() Set res = nothing Set cmd.ActiveConnection = nothing Set Cmd= nothing]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/11/11925.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何用QTP 选中网页上的所有复选框</title>
		<link>http://www.mianwww.com/html/2011/11/11923.html</link>
		<comments>http://www.mianwww.com/html/2011/11/11923.html#comments</comments>
		<pubDate>Mon, 14 Nov 2011 12:20:22 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=11923</guid>
		<description><![CDATA[Set MyDescrīption = Descrīption.Create() MyDescrīption(&#8220;html tag&#8221;).Value = &#8220;INPUT&#8221; MyDescrīption(&#8220;type&#8221;).Value = &#8220;checkbox&#8221; Set Checkboxes = Browser(&#8220;Itinerary&#8221;).Page(&#8220;Itinerary&#8221;).ChildObjects(MyDescrīption) NoOfChildObjs = Checkboxes.Count For Counter=0 to NoOfChildObjs-1 Checkboxes(Counter).Set &#8220;ON&#8221; Next]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/11/11923.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于QuickTest的一些问题</title>
		<link>http://www.mianwww.com/html/2011/10/10904.html</link>
		<comments>http://www.mianwww.com/html/2011/10/10904.html#comments</comments>
		<pubDate>Sat, 15 Oct 2011 16:15:50 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=10904</guid>
		<description><![CDATA[QuickTest 如何处理Cookie？ 服务器端连接（例如CGI 脚本）可以使用Cookie 存储和检索连接的客户端的信息。 QuickTest 在内存中为每个用户存储Cookie，并且浏览器按正常方式处理这些Cookie。 QuickTest 如何处理会话ID？ 处理会话ID 的是服务器，而不是浏览器，通常用Cookie 或在所有链接中嵌入会话ID 的方法。这不影响QuickTest。 QuickTest 如何处理服务器重定向？ 当服务器重定向客户端时，客户端通常不会注意重定向，且一般不会出现错误定向。在大多数情况下，客户端重定向到服务器的另一个脚本上。其他脚本为要查看的后续页生成HTML 代码。这对QuickTest 或浏览器没有影响。 QuickTest 如何处理元标记？ 元标记不影响页面的显示方式。通常，它们只包含有关页面的创建者、页面的更新频率、页面的内容和表示页面内容的关键词等方面的信息。因此，QuickTest 处理元标记没有任何问题。 QuickTest 是否使用.asp？ 使用Active Server Page 技术动态创建的网页有一个.asp 扩展名。该技术完全是服务器端的，并且与QuickTest 无关。 QuickTest 是否使用COM？ QuickTest 符合COM 标准。 QuickTest 支持嵌入网页的COM 对象（现在只能通过Microsoft Internet Explorer 才能对其进行访问），并且您可以在VBScript 中驱动COM 对象。 QuickTest 是否使用XML？ XML 是可扩展标记语言，它是SGML 用于Web 文档的缩减版本，Web 设计人员可以通过XML 创建自己自定义的标记。QuickTest 支持XML 并将XML 标记识别为对象。 还可以创建XML [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/10/10904.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>北京鼎普科技股份有限公司 QTP面试题</title>
		<link>http://www.mianwww.com/html/2010/04/7624.html</link>
		<comments>http://www.mianwww.com/html/2010/04/7624.html#comments</comments>
		<pubDate>Wed, 07 Apr 2010 08:50:33 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=7624</guid>
		<description><![CDATA[填空： 1. QTP脚本语言采用_________（备注：我猜好像是VBS，本人对QTP学的也是皮毛，基本上等于不会） 2. 通过DESKTOP对象可以访问windows的桌面顶层对象，想要截屏应使用的方法是______________________ 3. 激活窗口使用的方法______________。 问答题： 1. QTP中RO与TO的区别？ 2. QTP中OBJECT SPY的作用？ 3. 编写在QTP脚本，实现向记事本中输入“0123456789ABCDEFG”后，按ENTER？ 4. 下面脚本的目的是获取当前桌面中名为“test_记事本”的窗口对象，请补全？ set objdesc=Description.Create() objdesc(“text”).value=”test_记事本” set object couection=Desktop.______________ 填空： 1. QTP脚本语言采用_________（备注：我猜好像是VBS，本人对QTP学的也是皮毛，基本上等于不会） 2. 通过DESKTOP对象可以访问windows的桌面顶层对象，想要截屏应使用的方法是______________________ 3. 激活窗口使用的方法______________。 问答题： 1. QTP中RO与TO的区别？ 2. QTP中OBJECT SPY的作用？ 3. 编写在QTP脚本，实现向记事本中输入“0123456789ABCDEFG”后，按ENTER？ 4. 下面脚本的目的是获取当前桌面中名为“test_记事本”的窗口对象，请补全？ set objdesc=Description.Create() objdesc(“text”).value=”test_记事本” set object couection=Desktop.______________]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2010/04/7624.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>北京鼎普科技公司软件测试工程师QTP笔试题</title>
		<link>http://www.mianwww.com/html/2010/03/7324.html</link>
		<comments>http://www.mianwww.com/html/2010/03/7324.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 02:28:14 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=7324</guid>
		<description><![CDATA[1.QTP中RO与TO的区别？ TO是Test Object的简称，RO是Runtime Object简称，既用来区分仓库对象和实际对象，又用来区分对象的封装接口和自身接口。 从实际作用上来看，应该说TO就是是仓库文件里定义的仓库对象，RO是被测试软件的实际对象。 QTP为用户提供了两种操作对象的接口，一种就是对象的封装接口，另一种是对象的自身接口。对象的自身接口是对象控件本身的接口，对象的封装接口是QTP 为对象封装的另一层接口，它是QTP通过调用对象的自身接口来实现的。两种接口的脚本书写格式的差别在于：自身接口需要在对象名后面加object再加属 性名或方法名，封装接口就不用在对象名后面加object. 2.QTP中OBJECT SPY的作用？ 查看对象，在查看窗口里有列出这些接口，包括属性和方法。 窗口中间有选择栏让你选择Run-time Object或者Test Object， 当你选择Runtime Object时，它显示的就是对象的自身接口（自身的属性和方法） 当你选择Test Object时，它显示的就是对象的封装接口（封装的属性和方法） 3.编写在QTP脚本，实现向记事本中输入 “0123456789ABCDEFG”后，按ENTER？ SystemUtil.Run &#8220;C:\WINDOWS\system32\notepad.exe&#8221; Window(&#8220;Notepad&#8221;).Activate Window(&#8220;Notepad&#8221;).WinEditor(&#8220;Edit&#8221;).Type &#8220;0123456789ABCDEFG&#8221;]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2010/03/7324.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

