{"id":1334,"date":"2012-03-08T23:50:09","date_gmt":"2012-03-08T18:20:09","guid":{"rendered":"http:\/\/www.automationrepository.com\/?p=1334"},"modified":"2012-05-03T16:27:32","modified_gmt":"2012-05-03T10:57:32","slug":"how-to-identify-broken-links-using-qtp","status":"publish","type":"post","link":"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/","title":{"rendered":"Find Broken Links using QTP without directly opening the links"},"content":{"rendered":"<div style=\"text-align: justify; font-family: Verdana;\">\n<p>Consider this scenario. You open the Home page of the web application that you are testing. In your Home page, you&#8217;ll have many links pointing to various sections of the website. <strong>Your task is to check that there should be no broken links (or dead links) in the Home page.<\/strong> i.e. All the links <!--more-->should open successfully without throwing &#8216;Page Not Found&#8217; error.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" title=\"Automation Repository Home Page\" src=\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/home-page-links.png\" alt=\"Automation Repository Home Page\" width=\"728\" height=\"421\" \/><\/p>\n<p><em> <\/em><br \/>\n<strong> The standard approach to find out the broken links in this case is depicted in the below flowchart.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" title=\"Checking Broken Links - The Normal Way\" src=\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/check-broken-links-normal.png\" alt=\"Checking Broken Links - The Normal Way\" width=\"555\" height=\"157\" \/><\/p>\n<p><em> <\/em><br \/>\nRather than using this method, we would try using a different way to check if the links available in a given page work properly or are broken. In this method, <strong>the code uses each of the links to create an HTTP Request. This request is then sent to the server and depending upon the response (e.g. 200 &#8211; Page Found, 404 &#8211; Page Not Found), you will come to know if the link is working or broken.<\/strong> With this method you can check if the page exists or not without opening the page directly.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" title=\"Identify Broken Links with WinHTTPRequest\" src=\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/check-broken-links-winhttprequest.png\" alt=\"Identify Broken Links with WinHTTPRequest\" width=\"717\" height=\"149\" \/><\/p>\n<p><em> <\/em><br \/>\nLet&#8217;s see the code which you can use to find out broken links in your application.<\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\n'This is the main page\r\nBrowser(&quot;Browser&quot;).Page(&quot;HomePage&quot;).Sync\r\n\r\n'Find out all the links in the page using ChildObjects\r\nSet oLink = Description.Create\r\noLink(&quot;micclass&quot;).Value = &quot;Link&quot;\r\nSet oAllLinks = Browser(&quot;Browser&quot;).Page(&quot;HomePage&quot;).ChildObjects(oLink)\r\n\r\n'Find out the count of links\r\niTotalLinks = oAllLinks.Count\r\n\r\n'Loop through all the links to find if the link is broken or not\r\nFor i=0 to iTotalLinks - 1\r\n\r\n  'Find out the url for the link\r\n  sURL = oAllLinks(i).GetROProperty(&quot;url&quot;)\r\n\r\n  'Create a WinHTTP Request using the link's URL\r\n  Set objWinHTTP = CreateObject(&quot;WinHttp.WinHttpRequest.5.1&quot;)\r\n  objWinHTTP.Open &quot;GET&quot;, sURL, False\r\n  objWinHTTP.SetRequestHeader &quot;User-Agent&quot;, &quot;Mozilla\/4.0 (compatible; MyApp 1.0; Windows NT 5.1)&quot;\r\n\r\n  'Send the Request to the Server and capture the response\r\n  objWinHTTP.Send\r\n  iReturnVal = objWinHTTP.Status\r\n\r\n  'Find out if the Link exists or is broken\r\n  If iReturnVal = 200 Then\r\n\tmsgbox &quot;Link - &quot; &amp; sURL &amp; &quot; Exists&quot;\r\n  ElseIf iReturnVal = 404 Then\r\n\tmsgbox &quot;Link - &quot; &amp; sURL &amp; &quot; is Broken&quot;\r\n  Else\r\n    msgbox &quot;Code&quot; - iReturnVal\r\n  End If\r\n\r\n  Set objWinHTTP = Nothing\r\n\r\nNext\r\n<\/pre>\n<p>The above example uses only 200 and 404 HTTP status codes. Below is the list of all the HTTP status codes that you can use to refine this code as per your requirement.<\/p>\n<table width=\"623\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"45\"><strong>Code<\/strong><\/td>\n<td valign=\"top\" width=\"240\"><strong>Status<\/strong><\/td>\n<td valign=\"top\" width=\"330\"><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">100<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_CONTINUE<\/td>\n<td valign=\"top\" width=\"330\">The request can be continued.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">101<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_SWITCH_PROTOCOLS<\/td>\n<td valign=\"top\" width=\"330\">The server has switched protocols.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">200<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_OK<\/td>\n<td valign=\"top\" width=\"330\">The request is completed successfully.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">201<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_CREATED<\/td>\n<td valign=\"top\" width=\"330\">The request has been fulfilled and resulted in the creation of a new resource.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">202<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_CREATED<\/td>\n<td valign=\"top\" width=\"330\">The request has been accepted for processing, but the processing has not been completed.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">203<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_PARTIAL<\/td>\n<td valign=\"top\" width=\"330\">The returned meta information in the entity-header is not the definitive set available from the originating server.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">204<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_NO_CONTENT<\/td>\n<td valign=\"top\" width=\"330\">The server has fulfilled the request, but there is no new information to be sent back.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">205<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_RESET_CONTENT<\/td>\n<td valign=\"top\" width=\"330\">The request has been completed, and the client program should reset the document view that caused the request to be sent to allow the user to easily initiate another input action.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">206<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_PARTIAL_CONTENT<\/td>\n<td valign=\"top\" width=\"330\">The server has fulfilled the partial GET request for the resource.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">207<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_WEBDAV_MULTI_STATUS<\/td>\n<td valign=\"top\" width=\"330\">During a World Wide Web Distributed Authoring and Versioning (WebDAV) operation, this indicates multiple status codes for a single response. The response body contains Extensible Markup Language (XML) that describes the status codes.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">300<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_AMBIGUOUS<\/td>\n<td valign=\"top\" width=\"330\">The requested resource is available at one or more locations.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">301<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_MOVED<\/td>\n<td valign=\"top\" width=\"330\">The requested resource has been assigned to a new permanent Uniform Resource Identifier (URI), and any future references to this resource should be done using one of the returned URIs.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">302<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_REDIRECT<\/td>\n<td valign=\"top\" width=\"330\">The requested resource resides temporarily under a different URI.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">303<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_REDIRECT_METHOD<\/td>\n<td valign=\"top\" width=\"330\">The response to the request can be found under a different URI and should be retrieved using a GET HTTP verb on that resource.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">304<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_NOT_MODIFIED<\/td>\n<td valign=\"top\" width=\"330\">The requested resource has not been modified.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">305<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_USE_PROXY<\/td>\n<td valign=\"top\" width=\"330\">The requested resource must be accessed through the proxy given by the location field.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">307<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_REDIRECT_KEEP_VERB<\/td>\n<td valign=\"top\" width=\"330\">The redirected request keeps the same <em>HTTP verb<\/em>. HTTP\/1.1 behavior.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">400<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_BAD_REQUEST<\/td>\n<td valign=\"top\" width=\"330\">The request could not be processed by the server due to invalid syntax.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">401<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_DENIED<\/td>\n<td valign=\"top\" width=\"330\">The requested resource requires user authentication.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">402<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_PAYMENT_REQ<\/td>\n<td valign=\"top\" width=\"330\">Not implemented in the HTTP protocol.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">403<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_FORBIDDEN<\/td>\n<td valign=\"top\" width=\"330\">The server understood the request, but cannot fulfill it.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">404<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_NOT_FOUND<\/td>\n<td valign=\"top\" width=\"330\">The server has not found anything that matches the requested URI.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">405<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_BAD_METHOD<\/td>\n<td valign=\"top\" width=\"330\">The <em>HTTP verb<\/em> used is not allowed.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">406<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_NONE_ACCEPTABLE<\/td>\n<td valign=\"top\" width=\"330\">No responses acceptable to the client were found.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">407<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_PROXY_AUTH_REQ<\/td>\n<td valign=\"top\" width=\"330\">Proxy authentication required.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">408<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_REQUEST_TIMEOUT<\/td>\n<td valign=\"top\" width=\"330\">The server timed out waiting for the request.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">409<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_CONFLICT<\/td>\n<td valign=\"top\" width=\"330\">The request could not be completed due to a conflict with the current state of the resource. The user should resubmit with more information.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">410<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_GONE<\/td>\n<td valign=\"top\" width=\"330\">The requested resource is no longer available at the server, and no forwarding address is known.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">411<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_LENGTH_REQUIRED<\/td>\n<td valign=\"top\" width=\"330\">The server cannot accept the request without a defined content length.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">412<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_PRECOND_FAILED<\/td>\n<td valign=\"top\" width=\"330\">The precondition given in one or more of the request header fields evaluated to false when it was tested on the server.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">413<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_REQUEST_TOO_LARGE<\/td>\n<td valign=\"top\" width=\"330\">The server cannot process the request because the request entity is larger than the server is able to process.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">414<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_URI_TOO_LONG<\/td>\n<td valign=\"top\" width=\"330\">The server cannot service the request because the request URI is longer than the server can interpret.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">415<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_UNSUPPORTED_MEDIA<\/td>\n<td valign=\"top\" width=\"330\">The server cannot service the request because the entity of the request is in a format not supported by the requested resource for the requested method.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">449<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_RETRY_WITH<\/td>\n<td valign=\"top\" width=\"330\">The request should be retried after doing the appropriate action.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">500<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_SERVER_ERROR<\/td>\n<td valign=\"top\" width=\"330\">The server encountered an unexpected condition that prevented it from fulfilling the request.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">501<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_NOT_SUPPORTED<\/td>\n<td valign=\"top\" width=\"330\">The server does not support the functionality required to fulfill the request.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">502<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_BAD_GATEWAY<\/td>\n<td valign=\"top\" width=\"330\">The server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">503<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_SERVICE_UNAVAIL<\/td>\n<td valign=\"top\" width=\"330\">The service is temporarily overloaded.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">504<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_GATEWAY_TIMEOUT<\/td>\n<td valign=\"top\" width=\"330\">The request was timed out waiting for a gateway.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"45\">505<\/td>\n<td valign=\"top\" width=\"240\">HTTP_STATUS_VERSION_NOT_SUP<\/td>\n<td valign=\"top\" width=\"330\">The server does not support the HTTP protocol version that was used in the request message.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em> <\/em><br \/>\nUse the comments section to let us know if this was useful for you. Happy Reading.. :&#8211;)<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;\">To check out QTP tutorials, visit our <a title=\"QTP Tutorials\" href=\"http:\/\/www.automationrepository.com\/tutorials-for-qtp-beginners\/\" target=\"_blank\">QTP Tutorials<\/a> page. You can also check the <a title=\"All Articles\" href=\"http:\/\/www.automationrepository.com\/archive\/\" target=\"_blank\">Archives<\/a> page to view the list of all our articles.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Consider this scenario. You open the Home page of the web application that you are testing. In your Home page, you&#8217;ll have many links pointing to various sections of the website. Your task is to check that there should be no broken links (or dead links) in the Home page. i.e. All the links<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,6],"tags":[91,93,92],"class_list":["post-1334","post","type-post","status-publish","format-standard","hentry","category-advanced-concepts","category-not-so-common-stuff","tag-broken-links","tag-http_status_not_found","tag-http_status_ok"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Find Broken Links using QTP without directly opening the links - XX<\/title>\n<meta name=\"description\" content=\"Use WinHttpRequest to create a HTTP Request, send it to the server and find out if the link is broken or not based on the HTTP Status Code received from the server.\" \/>\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\/03\/how-to-identify-broken-links-using-qtp\/\" \/>\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=\"6 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\/03\/how-to-identify-broken-links-using-qtp\/\",\"url\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/\",\"name\":\"Find Broken Links using QTP without directly opening the links - XX\",\"isPartOf\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/home-page-links.png\",\"datePublished\":\"2012-03-08T18:20:09+00:00\",\"dateModified\":\"2012-05-03T10:57:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/#\/schema\/person\/7a35710e1ce89e5fb481be88fcd6cd20\"},\"description\":\"Use WinHttpRequest to create a HTTP Request, send it to the server and find out if the link is broken or not based on the HTTP Status Code received from the server.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#primaryimage\",\"url\":\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/home-page-links.png\",\"contentUrl\":\"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/home-page-links.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.automationrepository.com\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Find Broken Links using QTP without directly opening the links\"}]},{\"@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":"Find Broken Links using QTP without directly opening the links - XX","description":"Use WinHttpRequest to create a HTTP Request, send it to the server and find out if the link is broken or not based on the HTTP Status Code received from the server.","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\/03\/how-to-identify-broken-links-using-qtp\/","twitter_misc":{"Written by":"Anish Pillai","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/","url":"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/","name":"Find Broken Links using QTP without directly opening the links - XX","isPartOf":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#primaryimage"},"image":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/home-page-links.png","datePublished":"2012-03-08T18:20:09+00:00","dateModified":"2012-05-03T10:57:32+00:00","author":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/#\/schema\/person\/7a35710e1ce89e5fb481be88fcd6cd20"},"description":"Use WinHttpRequest to create a HTTP Request, send it to the server and find out if the link is broken or not based on the HTTP Status Code received from the server.","breadcrumb":{"@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#primaryimage","url":"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/home-page-links.png","contentUrl":"https:\/\/www.automationrepository.com\/wordpress\/wp-content\/uploads\/ar\/home-page-links.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.automationrepository.com\/wordpress\/2012\/03\/how-to-identify-broken-links-using-qtp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.automationrepository.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Find Broken Links using QTP without directly opening the links"}]},{"@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\/1334","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=1334"}],"version-history":[{"count":24,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/posts\/1334\/revisions"}],"predecessor-version":[{"id":1556,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/posts\/1334\/revisions\/1556"}],"wp:attachment":[{"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.automationrepository.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}