{"id":1418,"date":"2012-04-06T02:16:16","date_gmt":"2012-04-05T20:46:16","guid":{"rendered":"http:\/\/www.automationrepository.com\/?p=1418"},"modified":"2012-05-04T01:57:22","modified_gmt":"2012-05-03T20:27:22","slug":"qtp-framework-tutorial-qtp-linear-framework","status":"publish","type":"post","link":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/","title":{"rendered":"QTP Linear Framework &#8211; Complete Reference with Example"},"content":{"rendered":"<div style=\"text-align: justify; font-family: Verdana;\">\n<p>In the previous article, we discussed what a test automation framework is all about and also provided brief overview about various <a title=\"QTP Frameworks \u2013 An Introduction\" href=\"http:\/\/www.automationrepository.com\/2012\/03\/qtp-framework-types-an-introduction\/\">QTP framework types<\/a> that you can use while scripting. Starting with this article, we will cover each of the QTP framework types in detail.<br \/>\n<span><br \/>\n<\/span><br \/>\nIn this article, we will cover the following aspects<!--more--> of <strong>QTP Linear Framework<\/strong> &#8211;<\/p>\n<ul>\n<li><strong>a)<\/strong> What is QTP&#8217;s Linear Framework.<\/li>\n<li><strong>b)<\/strong> What are the components that constitute the linear framework.<\/li>\n<li><strong>c)<\/strong> How to write scripts in QTP&#8217;s Linear Framework.<\/li>\n<li><strong>d)<\/strong> Advantages and Disadvantages of the linear framework.<\/li>\n<\/ul>\n<p><span><br \/>\n<\/span><\/p>\n<div style=\"font-family: Verdana,sans-serif; border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: left;\">\n<p><strong>UPDATES<\/strong><\/p>\n<p>1) You are free to download and play around with the code used for this framework. <strong>The download link is available at the end of the article.<\/strong><\/p>\n<p>2) Just like this, we have written more articles on various other QTP Frameworks. If you wish to have a look at those, please visit <a title=\"QTP Frameworks \u2013 An Introduction\" href=\"http:\/\/www.automationrepository.com\/2012\/03\/qtp-framework-types-an-introduction\/\" target=\"_blank\"><strong>QTP Framework<\/strong> <\/a>main page. <strong>The bottom of the page contains links to other QTP Frameworks.<\/strong><\/p>\n<\/div>\n<p><span><br \/>\n<\/span><br \/>\nLet&#8217;s discuss each of these points one by one.<br \/>\n<span><br \/>\n<\/span><\/p>\n<h3>What is QTP Linear Framework approach?<\/h3>\n<p>Linear Framework is nothing but writing all the steps in your action one after the other in a linear form. This approach is also called linear scripting. In this approach, your entire test case flow will be written in QTP in a linear fashion.<\/p>\n<p>Consider an example where you have a test case to login to application, search for some data and then logout. In linear framework, the code would look like something shown below.<\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\n'Code to Open Application\r\n'Code to enter user name in Login Page\r\n'Code to enter password\r\n'Click on Login button and verify successful Login\r\n'Search for the required data\r\n'Logout from the application\r\n'Close the application\r\n<\/pre>\n<p><em> <\/em><br \/>\nAs you can see in the above example, you are not doing much in terms of framework creation with this type of QTP Framework. Hence <strong>this is the simplest framework to use and implement. The normal Record and Playback that we do with QTP falls under this framework<\/strong>.<\/p>\n<p>Let&#8217;s now see some advantages and disadvantages of QTP Linear Framework. This would help you analyze the positives and shortcomings of this framework and thus help determine the situations where this framework can be used.<br \/>\n<span><br \/>\n<\/span><\/p>\n<h3>QTP Linear Framework &#8211; Advantages and Disadvantages<\/h3>\n<p><strong>Advantages<\/strong><\/p>\n<ul>\n<li>a) <strong>Very little automation expertise required<\/strong>. Only the tool knowledge is necessary for creating scripts.<\/li>\n<li>b) This is the <strong>fastest way to create scripts<\/strong>.<\/li>\n<li>c) Since the framework is not complex, it becomes very easy to understand the flow.<\/li>\n<\/ul>\n<p><em> <\/em><br \/>\n<strong>Disadvantages<\/strong><\/p>\n<ul>\n<li>a) Since the code is written in linear manner without the use of any functions, there is <strong>very little scope of re-use<\/strong>.<\/li>\n<li>b) The only way to re-use the code is to copy paste it wherever needed. Hence you will have the same code being written at multiple place. <strong>Maintaining this code is very time consuming and error prone<\/strong> because you have to make changes at all the affected places.<\/li>\n<li>c) In this framework, test data is hard-coded in the script. <strong>So you cannot use the same code to test multiple sets of data.<\/strong> Either you have to change the data after every run or you have to create multiple copies of the code to test different data. Both these methods are inefficient.<\/li>\n<\/ul>\n<p><span><br \/>\n<\/span><\/p>\n<h3>Where to Use QTP Linear Framework?<\/h3>\n<p>From the above section you can clearly make out that the disadvantages of this framework outweigh the advantages. <strong>Re-usabilty and maintainability are some of the major factors that are looked at when creating an automation framework. Because of this reason, you would rarely find linear framework being used in any real-life projects.<\/strong><\/p>\n<p>Since you can&#8217;t use it in complex real life automation projects, does this mean that this framework is of no use at all? Well.. not exactly. You can use this framework for the tasks where you want to finish off the work quickly. This can also be used to support manual testing.<\/p>\n<p>Consider this situation. Suppose you are testing an application where you have to create a lot of orders. Now creating these tasks is a lengthy and time consuming process. What you can do here is just record the order creation flow and run the script to create orders. You can run the script when you go out for lunch and by the time you are back, you would have your orders ready :&#8211;)<\/p>\n<p>You can also use it for many other repeatable tasks such as checking your GMail accounts for new mails when you start your machine, filling up time sheets etc. The possibilities are endless!!<br \/>\n<span><br \/>\n<\/span><\/p>\n<h3>Components in QTP Linear Framework<\/h3>\n<p>Since this framework is pretty simple and straightforward, there are not many components that are usually associated with it. Figure below lists the typical components used with this framework.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" title=\"QTP Linear Framework Design\" src=\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/qtp-linear-framework.PNG\" alt=\"QTP Linear Framework Design\" width=\"240\" height=\"295\" \/><\/p>\n<p><strong>1) Test Scripts:<\/strong> Even though you would not be automating many test cases using this approach, whatever scenarios you have with you, you can club them in one or more QTP tests.<\/p>\n<p><strong>2) Object Repository:<\/strong> If you are using record and playback method to create test scripts, you would have the object repository being automatically generated for you. If required, you can make some changes to the object properties in the repository. You can use <a title=\"Descriptive Programming in QTP \u2013 The Complete Guide : Part1\" href=\"http:\/\/www.automationrepository.com\/2012\/03\/descriptive-programming-in-qtp-the-complete-guide-part1\/\">Descriptive Programming Concepts<\/a> and thus skip the object repository altogether.<\/p>\n<p>You can also use some additional components such as a driver script if you want to schedule the time when the test cases should be run.<br \/>\n<span><br \/>\n<\/span><\/p>\n<h3>Example of QTP Linear Framework<\/h3>\n<p>We will now create a script in QTP Linear Framework which would open GMail and retrieve the number of emails received in your Inbox today. Using QTP&#8217;s AOM, we will also create a driver script which will help us schedule the execution time of this test case.<\/p>\n<p><span style=\"text-decoration: underline;\">Code to check the inbox for mails received today<\/span><\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\nDim iTodayMails\r\niTodayMails = 0\r\n\r\n'Open GMail\r\nSystemUtil.Run &quot;iexplore.exe&quot;, &quot;http:\/\/www.gmail.com&quot;\r\n'Page Sync\r\nBrowser(&quot;Gmail&quot;).Page(&quot;Gmail&quot;).Sync\r\n\r\n'Login to Gmail\r\nBrowser(&quot;Gmail&quot;).Page(&quot;Gmail&quot;).WebEdit(&quot;UserName&quot;).Set &quot;valid gmail login id&quot;\r\nBrowser(&quot;Gmail&quot;).Page(&quot;Gmail&quot;).WebEdit(&quot;Password&quot;).Set &quot;valid gmail password&quot;\r\nBrowser(&quot;Gmail&quot;).Page(&quot;Gmail&quot;).WebButton(&quot;SignIn&quot;).Click\r\n'Page Sync\r\nBrowser(&quot;Inbox&quot;).Page(&quot;Inbox&quot;).Sync\r\n\r\n'Search for emails received today in your inbox\r\n'Logic - The mails received today will have only time in the last(8th) column.\r\n'Time is always followed by am or pm. So the code check for the last 2 characters and matches it with am or pm.\r\nFor iR = 1 to 50\r\n\tsLastColumnText = Browser(&quot;Inbox&quot;).Page(&quot;Inbox&quot;).Frame(&quot;Frame&quot;).WebTable(&quot;Emails&quot;).GetCellData(iR,8)\r\n\tsLast2Characters = Right(sLastColumnText, 2)\r\n\tIf sLast2Characters = &quot;am&quot; or sLast2Characters = &quot;pm&quot; Then\r\n\t\tiTodayMails = iTodayMails + 1\r\n\tElse\r\n\t\t'Exit For\r\n\tEnd If\r\nNext\r\n'Report the number of  mails received today\r\nReporter.ReportEvent micPass, &quot;Total Emails Received Today - &quot; &amp; iTodayMails, &quot;&quot;\r\n\r\n'Sign out from GMail\r\nBrowser(&quot;Inbox&quot;).Page(&quot;Inbox&quot;).Frame(&quot;Frame&quot;).Link(&quot;SignOut&quot;).Click\r\nBrowser(&quot;Gmail&quot;).Page(&quot;Gmail&quot;).Sync\r\n'Close the browser\r\nBrowser(&quot;Gmail&quot;).Close()\r\n<\/pre>\n<p><em> <\/em><br \/>\n<span style=\"text-decoration: underline;\"> Driver Script created using QTP AOM<\/span><\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\nDim testCasePath, resultPath\r\ntestCasePath = &quot;D:\\QTP\\QTP Framework Samples\\QTP Linear Framework Demo\\GMail Inbox1&quot;\r\nresultPath = &quot;D:\\QTP\\QTP Framework Samples\\QTP Linear Framework Demo\\Result&quot;\r\n\r\n'Open QTP\r\nSet qtpApp = CreateObject(&quot;QuickTest.Application&quot;)\r\n\r\n'If QTP is not open then open QTP application\r\nIf qtpApp.launched &lt;&gt; True Then\r\n\tqtpApp.Launch\r\nEnd If\r\n\r\n'Make the QuickTest application visible\r\nqtpApp.Visible = True\r\n\r\n'Set QuickTest run options\r\nqtpApp.Options.Run.ImageCaptureForTestResults = &quot;OnError&quot;\r\nqtpApp.Options.Run.RunMode = &quot;Fast&quot;\r\nqtpApp.Options.Run.ViewResults = True\r\n\r\n'Open the test in read-only mode\r\nqtpApp.Open testCasePath, True\r\nWScript.Sleep 2000\r\n\r\n'set run settings for the testi\r\nSet qtpTest = qtpApp.Test\r\n\r\n'Instruct QuickTest to perform next step when error occurs\r\nqtpTest.Settings.Run.OnError = &quot;NextStep&quot;\r\n\r\n'Create the Run Results Options object\r\nSet qtpResult = CreateObject(&quot;QuickTest.RunResultsOptions&quot;)\r\n\r\n'Set the results location\r\nqtpResult.ResultsLocation = resultPath\r\n\r\n'Run the test\r\nWScript.Sleep 3000\r\nqtpTest.Run qtpResult\r\n<\/pre>\n<p>You can add this DriverScript code in Windows Start-up or schedule it through Windows Task Scheduler if you want to schedule the test case run at a particular time in a day or want to run the test case whenever you start your system.<\/p>\n<p><em> <\/em><br \/>\nThis was all about using QTP Linear Framework approach while writing your test scripts. Do you find any situations where you can use this framework to save yourselves from doing some boring tasks? Do let us know your ideas in the comments section.<\/p>\n<p><center><a href=\"https:\/\/www.automationrepository.com\/wordpress\/download-code\/QTP Linear Framework Demo.zip\"><img decoding=\"async\" src=\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/blog_images\/qtp-scripts-download.png\" alt=\"\" \/><\/a><\/center><br \/>\n<span><br \/>\n<\/span><\/p>\n<\/div>\n<div style=\"font-family: Verdana,sans-serif; border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;\">\n<p><strong>If you enjoyed this article, you can join our blog to get new articles delivered directly in your inbox.<\/strong><\/p>\n<form style=\"text-align: center;\" action=\"http:\/\/feedburner.google.com\/fb\/a\/mailverify\" method=\"post\" onsubmit=\"window.open('http:\/\/feedburner.google.com\/fb\/a\/mailverify?uri=automationrepository\/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true\" target=\"popupwindow\"><input style=\"width: 160px; height: 20px;\" onfocus=\"if (this.value == 'Enter Your Email Address') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = 'Enter Your Email Address';}\" type=\"text\" value=\"Enter Your Email Address\" \/> <input type=\"hidden\" name=\"uri\" value=\"automationrepository\/feeds\" \/> <input type=\"hidden\" name=\"loc\" value=\"en_US\" \/> <input type=\"submit\" value=\"Join Us\" \/><\/p>\n<p style=\"text-align: justify;\">\n<\/form>\n<\/div>\n<p style=\"border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;\"><strong>Visit <a title=\"QTP Frameworks \u2013 An Introduction\" href=\"http:\/\/www.automationrepository.com\/2012\/03\/qtp-framework-types-an-introduction\/\">QTP Frameworks<\/a> Main Page for links to articles on other frameworks<\/strong>. You can also visit our <a title=\"QTP Tutorials\" href=\"http:\/\/www.automationrepository.com\/tutorials-for-qtp-beginners\/\" target=\"_blank\">QTP Tutorials<\/a> page for more QTP Tutorials.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the previous article, we discussed what a test automation framework is all about and also provided brief overview about various QTP framework types that you can use while scripting. Starting with this article, we will cover each of the QTP framework types in detail. In this article, we will cover the following aspects<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,97],"tags":[104,98],"class_list":["post-1418","post","type-post","status-publish","format-standard","hentry","category-qtp-concepts","category-qtp-framework","tag-driver-script","tag-qtp-linear-framework"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>QTP Linear Framework - Complete Reference with Example - XX<\/title>\n<meta name=\"description\" content=\"This article talks about QTP Linear Framework, its components, advantages and disadvantages. It also includes a complete example on how to use this framework.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Anish Pillai\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/\",\"url\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/\",\"name\":\"QTP Linear Framework - Complete Reference with Example - XX\",\"isPartOf\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/qtp-linear-framework.PNG\",\"datePublished\":\"2012-04-05T20:46:16+00:00\",\"dateModified\":\"2012-05-03T20:27:22+00:00\",\"author\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/#\/schema\/person\/7a35710e1ce89e5fb481be88fcd6cd20\"},\"description\":\"This article talks about QTP Linear Framework, its components, advantages and disadvantages. It also includes a complete example on how to use this framework.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#primaryimage\",\"url\":\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/qtp-linear-framework.PNG\",\"contentUrl\":\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/qtp-linear-framework.PNG\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.automationrepository.com\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"QTP Linear Framework &#8211; Complete Reference with Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/#website\",\"url\":\"https:\/\/www.automationrepository.com\/wordpress\/\",\"name\":\"XX\",\"description\":\"\\r\\nasas\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.automationrepository.com\/wordpress\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/#\/schema\/person\/7a35710e1ce89e5fb481be88fcd6cd20\",\"name\":\"Anish Pillai\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8aa984de2295c3c4078fa48f6ba5d91e7c849b1a27a11dca24c6f11dd673ba14?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8aa984de2295c3c4078fa48f6ba5d91e7c849b1a27a11dca24c6f11dd673ba14?s=96&d=mm&r=g\",\"caption\":\"Anish Pillai\"},\"description\":\"Find more about Anish Pillai on Google+\",\"sameAs\":[\"http:\/\/www.automationrepository.com\"],\"url\":\"https:\/\/www.automationrepository.com\/wordpress\/author\/anish\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"QTP Linear Framework - Complete Reference with Example - XX","description":"This article talks about QTP Linear Framework, its components, advantages and disadvantages. It also includes a complete example on how to use this framework.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/","twitter_misc":{"Written by":"Anish Pillai","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/","url":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/","name":"QTP Linear Framework - Complete Reference with Example - XX","isPartOf":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#primaryimage"},"image":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/qtp-linear-framework.PNG","datePublished":"2012-04-05T20:46:16+00:00","dateModified":"2012-05-03T20:27:22+00:00","author":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/#\/schema\/person\/7a35710e1ce89e5fb481be88fcd6cd20"},"description":"This article talks about QTP Linear Framework, its components, advantages and disadvantages. It also includes a complete example on how to use this framework.","breadcrumb":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#primaryimage","url":"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/qtp-linear-framework.PNG","contentUrl":"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/qtp-linear-framework.PNG"},{"@type":"BreadcrumbList","@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/04\/qtp-framework-tutorial-qtp-linear-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.automationrepository.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"QTP Linear Framework &#8211; Complete Reference with Example"}]},{"@type":"WebSite","@id":"https:\/\/www.automationrepository.com\/wordpress\/#website","url":"https:\/\/www.automationrepository.com\/wordpress\/","name":"XX","description":"\r\nasas","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.automationrepository.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.automationrepository.com\/wordpress\/#\/schema\/person\/7a35710e1ce89e5fb481be88fcd6cd20","name":"Anish Pillai","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.automationrepository.com\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8aa984de2295c3c4078fa48f6ba5d91e7c849b1a27a11dca24c6f11dd673ba14?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8aa984de2295c3c4078fa48f6ba5d91e7c849b1a27a11dca24c6f11dd673ba14?s=96&d=mm&r=g","caption":"Anish Pillai"},"description":"Find more about Anish Pillai on Google+","sameAs":["http:\/\/www.automationrepository.com"],"url":"https:\/\/www.automationrepository.com\/wordpress\/author\/anish\/"}]}},"_links":{"self":[{"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/posts\/1418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/comments?post=1418"}],"version-history":[{"count":26,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/posts\/1418\/revisions"}],"predecessor-version":[{"id":1433,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/posts\/1418\/revisions\/1433"}],"wp:attachment":[{"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}