<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>Ranorex News</title>
      <description>Latest news from Ranorex</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=003d500c4ea6b19c3b9b01a028faff28</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=003d500c4ea6b19c3b9b01a028faff28&amp;_render=rss&amp;page=2" />
      <pubDate>Sat, 26 May 2012 03:29:20 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ranorex" /><feedburner:info uri="ranorex" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Franorex" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Franorex" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Franorex" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/ranorex" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Franorex" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Franorex" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Franorex" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
         <title>Ranorex 3.2.3 with support for Firefox 12 Beta released</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/AZMK60-KWrM/ranorex-323-with-support-for-firefox-12-beta-released.html</link>
         <description>Ranorex 3.2.3 is now available and includes the following release  notes:
General...</description>
         <guid isPermaLink="false" />
         <pubDate>Fri, 30 Mar 2012 13:53:00 +0000</pubDate>
         <content:encoded><![CDATA[<h3>Ranorex 3.2.3 is now available and includes the following release  notes:</h3>
<h3>General changes/Features</h3><ul><li> Added support for Firefox 11 and Firefox 12 Beta     </li><li> Module Reports now show tracing screenshots if an error occured during module execution     </li><li> Improved object recognition for some scenarios where complex ActiveX controls are embedded in a web site</li></ul><h3>Bugs</h3><ul><li> Fixed layout changes on some web pages when the Ranorex Chrome extension is active     </li><li> Flex Instrumentation now creates a config file in the homepath directory, in addition to the user profile     </li><li> Calling EnsureVisible on Flex elements no longer cause unnecessary scrolling in Flex 3.X DataGrids     </li><li> Fixed slow stepping in Ranorex Studio debugger when using the F10 key for stepping     </li><li> Solution-related MsBuild variables now work correctly in Ranorex Studio     </li><li> Fixed saving of test suite file content if edited in an additional text editor tab     </li><li> Variables used by actions in Recorder are now correctly generated after converting the action to user code     </li><li> Fixed Host.CloseApplication not to use the grace period if called on a WebDocument     </li><li> Fixed a hang which can occur when navigating the element tree using the screenshot tab in Ranorex Spy</li><li>Fixed JavaElement adapter Invoke and GetPropertyValue methods</li><li>Fixed a bug which sometimes caused Ranorex not to identify Chrome tab content correctly</li></ul><h3></h3>
<a rel="nofollow" target="_blank" href="http://www.ranorex.com/download.html" title="Opens internal link in current window" class="internal-link">Download Ranorex version 3.2.3 here.</a><br />(You          can find a direct download link for the latest Ranorex  version   on     the    Ranorex Studio start page.)<img src="http://feeds.feedburner.com/~r/ranorex/~4/AZMK60-KWrM" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/ranorex-323-with-support-for-firefox-12-beta-released.html</feedburner:origLink></item>
      <item>
         <title>Ranorex Workshops in Germany and Austria</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/diF0VxhBHYE/ranorex-workshops-in-germany-and-austria.html</link>
         <description>Get in touch with Ranorex professionals and learn how to use Ranorex best for your use cases....</description>
         <guid isPermaLink="false" />
         <pubDate>Mon, 19 Mar 2012 08:22:00 +0000</pubDate>
         <content:encoded><![CDATA[<h3>Get in touch with Ranorex professionals and learn how to use Ranorex best for your use cases. </h3>
<i>Please find details in German below.</i>
<br /><a rel="nofollow" target="_blank" href="http://www.ranorex.com/fileadmin/downloads/Testautomatisierung-in-Theorie-Praxis.pdf" title="Testautomatisierung-in-Theorie-Praxis.pdf (610 KB)"><img width="554" height="103" alt=""></a><br /><br /><b>2-tägiger Ranorex Workshop zum Thema „Testautomatisierung in der Theorie und  Praxis“<br /></b><br />Innerhalb der 2-tägigen Veranstaltung erlernen Sie nicht nur den Umgang mit den Ranorex Tools, sondern erfahren auch die theoretischen Grundlagen, wann und für welche Test-Projekte Automatisierung gewinnbringend eingesetzt werden kann.<br /><br />Näher Details entnehmen Sie bitte unserem Workshop-Dokument:<br /><a rel="nofollow" target="_blank" href="http://www.ranorex.com/fileadmin/downloads/Testautomatisierung-in-Theorie-Praxis.pdf" title="Testautomatisierung-in-Theorie-Praxis.pdf (610 KB)">Testautomatisierung-in-Theorie-Praxis.pdf</a><br /><br /><br /><b>Workshop Termine:</b><br /><br />
22.-23. Mai 2012 &nbsp;&nbsp;&nbsp; Wien - Österreich (Anmeldefrist 18. Mai 2012)<br />11.-12. Juni 2012&nbsp;&nbsp;&nbsp;&nbsp; Ismaning (nahe München) - Deutschland (Anmeldefrist 8. Juni 2012)<br /><br />
Sind auch Sie an einer Teilnahme am Workshop  interessiert?<br /><a rel="nofollow">Falls  ja, dann schreiben Sie uns einfach ein Email an info<em class="aticon"> </em>ranorex.com.</a><img src="http://feeds.feedburner.com/~r/ranorex/~4/diF0VxhBHYE" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/ranorex-workshops-in-germany-and-austria.html</feedburner:origLink></item>
      <item>
         <title>Ranorex 3.2.2 with support for Firefox 10 released</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/qKsZA08WWyM/ranorex-322-with-support-for-firefox-10-released.html</link>
         <description>Ranorex 3.2.2 is now available and includes the following release  notes:
General...</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 08 Mar 2012 16:11:00 +0000</pubDate>
         <content:encoded><![CDATA[<h3>Ranorex 3.2.2 is now available and includes the following release  notes:</h3>
<h3>General changes/Features</h3><ul><li> Added support for Firefox 10 and Firefox 11 Beta     </li><li> Improved object recognition for Flex 4.6 components     </li><li> Added &quot;Navigate Back/Forward&quot; menu items (including shortcuts)</li></ul><h3>Bugs</h3><ul><li> Fixed on-demand loading of data sources (caused too many Excel data connectors to be active)     </li><li> Fixed handling of solutions in Visual Studio 2010 format when opened with Ranorex Studio     </li><li> Improved Ranorex Studio Subversion integration when handling working copies from different SVN versions     </li><li> Fixed Subversion lock/unlock functionality in Ranorex Studio     </li><li> Improved stability and usability of 64 bit debugger in Ranorex Studio     </li><li> Fixed printing of test reports     </li><li> Fixed report when TestReport.Setup is called from different threads     </li><li> Fixed initialization of Ranorex IE Addon causing evaluation screen to be shown if no license is installed     </li><li> Fixed setting of TreeItem.Selected/Expanded attributes for Java     </li><li> Column header cells are now correctly identified for empty Flex data grids     </li><li> Fixed a possible memory leak in Flash/Flex applications automated by Ranorex</li></ul><h3></h3>
<a rel="nofollow" target="_blank" href="http://www.ranorex.com/download.html" title="Opens internal link in current window" class="internal-link">Download Ranorex version 3.2.2 here.</a><br />(You          can find a direct download link for the latest Ranorex  version   on     the    Ranorex Studio start page.)<img src="http://feeds.feedburner.com/~r/ranorex/~4/qKsZA08WWyM" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/ranorex-322-with-support-for-firefox-10-released.html</feedburner:origLink></item>
      <item>
         <title>Using Subversion with Ranorex projects</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/9wxCR8bYk8E/subversion-and-ranorex</link>
         <description>In general, it’s a good idea to use some kind of revision control system to keep track of the progression of your automated test projects – that way you can revert to a previous version if you run into trouble. Additionally using such a version control system is almost essential if you are working as [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=2049</guid>
         <pubDate>Wed, 29 Feb 2012 10:19:16 +0000</pubDate>
         <content:encoded><![CDATA[<p>In general, it’s a good idea to use some kind of revision control system to keep track of the progression of your automated test projects – that way you can revert to a previous version if you run into trouble.</p>
<p>Additionally using such a version control system is almost essential if you are working as a team on the same test automation project.</p>
<div id="attachment_2050" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/subversion-and-ranorex"><img class="size-medium wp-image-2050" title="Ranorex With SVN" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Ranorex-With-SVN-546x364.png" alt="Using Subversion with Ranorex projects" width="546" height="364"/></a><p class="wp-caption-text">Using Subversion with Ranorex projects</p></div>
<p>Therefore we recommend to use a source versioning system like SVN (which integrates in Ranorex Studio), having the advantages of</p>
<ul>
<li>making the history of all changes made to your project visible</li>
<li>providing backup functionality</li>
<li>preventing security issues on network shares (source code checked out locally)</li>
</ul>
<p>to name some of them.</p>
<p>The following paragraphs will explain how to</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/subversion-and-ranorex#setup">set up Ranorex for a better Subversion experience,</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/subversion-and-ranorex#checkout">check out a repository to your local drive,</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/subversion-and-ranorex#commit">commit a project to your repository</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/subversion-and-ranorex#models">and the two different versioning models available with Subversion</a></li>
</ul>
<p><span id="more-2049"></span></p>
<p>Before starting with the Ranorex specific part of this blog post I would recommend to have a look at the book <a rel="nofollow" target="_blank" href="http://svnbook.red-bean.com/index.en.html">Version Control with Subversion</a> to get a complete overview about version control (and learn things such as how to set up a SVN server).</p>
<p><a rel="nofollow" id="setup"></a></p>
<h2>Setting up Ranorex for a better Subversion experience</h2>
<p>Before performing all the subversion specific update/commit stuff, you should adjust the subversion settings as described in Noam Kfirs blog post “<a rel="nofollow" target="_blank" href="http://noam.kfir.cc/blog/2011/08/30/better-ranorex-studio-settings-for-subversion">Better Ranorex Studio settings for Subversion</a>”.</p>
<p>To do so open the Tools Options dialog and check the option “Automatically add new files” in Subversion Options area</p>
<div id="attachment_2054" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Automatically-Add-New-Files.png"><img class="size-medium wp-image-2054" title="Check &quot;Automatically add new files&quot;" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Automatically-Add-New-Files-546x378.png" alt="Check &quot;Automatically add new files&quot;" width="546" height="378"/></a><p class="wp-caption-text">Check &quot;Automatically add new files&quot;</p></div>
<p>and uncheck the option “Automatically copy/move log files to the project reports directory” in Ranorex Log Viewer area.</p>
<div id="attachment_2055" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Automatically-Copy-Logs.png"><img class="size-medium wp-image-2055" title="Uncheck &quot;Automatically copy/move log files to the project reports directory&quot;" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Automatically-Copy-Logs-546x378.png" alt="Uncheck &quot;Automatically copy/move log files to the project reports directory&quot;" width="546" height="378"/></a><p class="wp-caption-text">Uncheck &quot;Automatically copy/move log files to the project reports directory&quot;</p></div>
<p>In the Subversion Options area at the Tools Options dialog you can also choose the SVN version you are using (1.6 or 1.7).</p>
<p><a rel="nofollow" id="checkout"></a></p>
<h2>Checking out a repository to your local drive</h2>
<p><em><strong>Please note</strong> that it&#8217;s necessary to have access to a SVN-Server and a repository located on this SVN-Server to perform the following steps. Therefore please have a look at the book <a rel="nofollow" target="_blank" href="http://svnbook.red-bean.com/index.en.html">Version Control with Subversion</a> or contact your system administrator. If you do not want to host your own SVN-Server you can also use a free source code hosting service as listed at <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Apache_Subversion#Source_code_hosting">this wikipedia article</a>. It&#8217;s also possible to create your own repository without the use of a SVN-Server. This can be done using e.g. <a rel="nofollow" target="_blank" href="http://tortoisesvn.net/downloads.html">TortoiseSVN</a>; for a step-by-step description see <a rel="nofollow" target="_blank" href="http://invalidlogic.com/2006/12/06/using-subversion-without-a-subversion-server/">this blog post</a>.</em></p>
<p>After making sure that you have  access to the repository for your Ranorex test solutions, first of all you have to check out the repository to a local folder (called &#8220;working copy&#8221;) on your hard drive to put your solutions into it.</p>
<div id="attachment_2058" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Check-Out-Repository.png"><img class="size-medium wp-image-2058" title="Open the Subversion Checkout dialog&#x002026;" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Check-Out-Repository-546x106.png" alt="Open the Subversion Checkout dialog&#x002026;" width="546" height="106"/></a><p class="wp-caption-text">Open the Subversion Checkout dialog…</p></div>
<div id="attachment_2059" class="wp-caption aligncenter" style="width:478px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Check-Out-Dialog.png"><img class="size-full wp-image-2059" title="&#x002026; and check out your repository to a local directory" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Check-Out-Dialog.png" alt="&#x002026; and check out your repository to a local directory" width="468" height="363"/></a><p class="wp-caption-text">… and check out your repository to a local directory</p></div>
<p><a rel="nofollow" id="commit"></a></p>
<h2>Commit a project to your repository</h2>
<p>After doing so, generate a new solution into the working copy directory you’ve just made a checkout to.</p>
<p>The generated files have automatically been added to your repository, since you have set the option “Automatically add new files” before.</p>
<div id="attachment_2061" class="wp-caption aligncenter" style="width:292px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Projects-View-Add.png"><img class="size-full wp-image-2061" title="Project View " src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Projects-View-Add.png" alt="Project View " width="282" height="191"/></a><p class="wp-caption-text">Project View </p></div>
<p>To commit the changes to your repository simply right-click on your solution file and choose “Commit…” from the context menu.</p>
<div id="attachment_2062" class="wp-caption aligncenter" style="width:293px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Projects-View-Commit.png"><img class="size-full wp-image-2062" title="Commit changes" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Projects-View-Commit.png" alt="Commit changes" width="283" height="318"/></a><p class="wp-caption-text">Commit changes</p></div>
<p><a rel="nofollow" id="models"></a></p>
<h2>Versioning models</h2>
<p>The basic problem of sharing files is that changes made by one team member might be accidentally overwritten by another as sketched in following figure:</p>
<div id="attachment_2114" class="wp-caption aligncenter" style="width:512px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Overwrite-Problem1.png"><img class="size-medium wp-image-2114" title="The modified version File&#x002019; of File is overwritten by the modified version File&#x002019;&#x002019;" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Overwrite-Problem1-502x500.png" alt="The modified version File&#x002019; of File is overwritten by the modified version File&#x002019;&#x002019;" width="502" height="500"/></a><p class="wp-caption-text">The modified version File’ of File is overwritten by the modified version File’’</p></div>
<p>To overcome this issue you can follow two different approaches:</p>
<p><strong>The &#8220;Lock-Modify-Unlock&#8221;-approach:</strong></p>
<div id="attachment_2111" class="wp-caption aligncenter" style="width:512px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Lock-Modify-Unlock.png"><img class="size-medium wp-image-2111" title="Tester2 will not overwrite changes of Tester 1 as the file is locked" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Lock-Modify-Unlock-502x500.png" alt="Tester2 will not overwrite changes of Tester 1 as the file is locked" width="502" height="500"/></a><p class="wp-caption-text">Tester2 will not overwrite changes of Tester 1 as the file is locked</p></div>
<p><strong>The &#8220;Copy-Modify-Merge&#8221;-approach:</strong></p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Copy-Modify-Merge-11.png"><img class="aligncenter size-medium wp-image-2112" title="Copy-Modify-Merge-1" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Copy-Modify-Merge-11-502x500.png" alt="Copy-Modify-Merge-1" width="502" height="500"/></a></p>
<div id="attachment_2113" class="wp-caption aligncenter" style="width:512px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Copy-Modify-Merge-21.png"><img class="size-medium wp-image-2113" title="Tester1 merges his changes with the changes of Tester2" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Copy-Modify-Merge-21-502x500.png" alt="Tester1 merges his changes with the changes of Tester2" width="502" height="500"/></a><p class="wp-caption-text">Tester1 merges his changes with the changes of Tester2</p></div>
<p>The &#8220;Copy-Modify-Merge&#8221; approach is the default used by Subversion. As all checked in files are text based files there should be no problems with using the “Copy-Modify-Merge” method. Even the XML-files should be understandable easily. So, in case of a conflict you should be able to determine which differences to accept or to decline.</p>
<div id="attachment_2071" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Merge-Dialog.png"><img class="size-medium wp-image-2071" title="Merging Test Suite file" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Merge-Dialog-546x198.png" alt="Merging Test Suite file" width="546" height="198"/></a><p class="wp-caption-text">Merging Test Suite file</p></div>
<p>Of course you can also use the Lock-Modify-Unlock model, if you do not want to merge the files manually.</p>
<div id="attachment_2072" class="wp-caption aligncenter" style="width:413px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Get-Lock.png"><img class="size-medium wp-image-2072" title="Locking Test Suite file" src="http://www.ranorex.com/blog/wp-content/uploads/2012/02/Get-Lock-403x500.png" alt="Locking Test Suite file" width="403" height="500"/></a><p class="wp-caption-text">Locking Test Suite file</p></div>
<p>By following the mentioned steps and looking up unclear topics in the book <a rel="nofollow" target="_blank" href="http://svnbook.red-bean.com/index.en.html">Version Control with Subversion</a> there should nothing stand in your way using version control with your Ranorex projects.</p>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Fsubversion-and-ranorex&amp;title=Using%20Subversion%20with%20Ranorex%20projects" id="wpa2a_2"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/l3uOyAxFRgM" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/9wxCR8bYk8E" height="1" width="1"/>]]></content:encoded>
         <category>Test Management</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/l3uOyAxFRgM/subversion-and-ranorex</feedburner:origLink></item>
      <item>
         <title>Roadshow “Trends in Testing 2012” through Germany and Switzerland</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/nMU-0AoeWY4/roadshow-trends-in-testing-2012-through-germany-and-switzerland.html</link>
         <description>This March Ranorex attends this year’s Imbus Roadshow “Trends in Testing” through Germany and...</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 14 Feb 2012 16:19:00 +0000</pubDate>
         <content:encoded><![CDATA[<b>This March Ranorex attends this year’s Imbus Roadshow “Trends in Testing” through Germany and Switzerland. Take the advantage and meet the experts in test automation at Stuttgart, Nuremberg, Hamburg, Bonn, Hofheim, Munich, and Zurich.</b> Please find details in German below.<br /><br />
<img height="114" width="256" alt="">
<h3></h3>
Die Veranstaltungsreihe „Trends in Testing“ informiert über die neuesten Entwicklungen im Bereich Software Qualitätssicherung&nbsp; und -Test. Die Mischung aus Best Practices und Forschungsergebnissen in Kombination mit Beispielen zur konkreten Toolunterstützung macht die Veranstaltung in diesem Rahmen einzigartig. In diesem Jahr geht der Ausblick in Richtung Test nonstop.
<h2>Testnonstop – vom Sprint zum Dauerlauf</h2>
Time-to-Market ist dominierender Wettbewerbsfaktor – auch und besonders bei Softwareprodukten. Durch Einsatz agiler Methoden kann die Time-to-Market erheblich verkürzt werden. Der Entwicklungszyklus komprimiert sich bis auf ein- bis drei-wöchige Sprints. <a rel="nofollow" target="_blank" href="https://www.imbus.de/veranstaltungen/trends-in-testing-2012/" class="external-link-new-window">Mehr...</a>

<a rel="nofollow" target="_blank" href="https://www.imbus.de/veranstaltungen/trends-in-testing-2012/" class="external-link-new-window"><img alt="Agile Testing" height="315" width="441"></a><br />

<b>Meet the Experts<br /><br /></b>
Treffen Sie die Experten für Software-Qualitätssicherung und -Test! Kommen Sie mit den Spezialisten ins Gespräch, stellen Sie Ihre Fragen und diskutieren Sie Ihre Anforderungen. In den Pausen an den Demo-Ständen und zwanglos beim Get-Together.<br /><br />
<b>Die Termine:</b><br /><br />12. März 2012 &nbsp;&nbsp;&nbsp; NH-Hotel Stuttgart Airport<br />14. März 2012 &nbsp;&nbsp;&nbsp; Sheraton Carlton Nürnberg<br />19. März 2012 &nbsp;&nbsp;&nbsp; Kai10 Hamburg (Mercure Hotel)<br />26. März 2012&nbsp; &nbsp;&nbsp; Rheinisches LandesMuseum<br />28. März 2012&nbsp; &nbsp;&nbsp; Stadthalle Hofheim<br />30. März 2012&nbsp; &nbsp;&nbsp; Leonardo Royal Hotel<br />04. April&nbsp; 2012&nbsp; &nbsp;&nbsp; World Trade Center Zürich<br /><br />
Die Veranstaltung ist kostenfrei und beginnt jeweils um 09:30 Uhr. <br /><br />
Die ausführliche Programmbeschreibung, alle Termine und Ihr Anmeldeformular finden Sie im Internet unter <a rel="nofollow" target="_blank" href="http://www.trends-in-testing.de/" class="external-link-new-window">www.trends-in-testing.de</a>.<img src="http://feeds.feedburner.com/~r/ranorex/~4/nMU-0AoeWY4" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/roadshow-trends-in-testing-2012-through-germany-and-switzerland.html</feedburner:origLink></item>
      <item>
         <title>Coming Up: Testing of Android Apps and SAP GUI</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/rR6kpTvEDTk/testing-of-android-apps-and-sap-gui.html</link>
         <description>We are excited to announce that we will be releasing an Android mobile test automation plug-in in...</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 01 Feb 2012 12:34:00 +0000</pubDate>
         <content:encoded><![CDATA[<div class="csc-textpic csc-textpic-left csc-textpic-above"><div class="csc-textpic-imagewrap"><div><img alt="Android Testing" height="140" width="120"><br /><br /></div></div><div class="csc-textpic-text">We are excited to announce that we will be releasing an Android mobile test automation plug-in in the next few months.<br /><br />This  new&nbsp;plug-in will enable you to record your mobile tests on a real  Android device and edit the recorded steps in the Ranorex Recorder, the  same way you would do with any Desktop or Web application. The powerful  recognition of the Android app's UI elements will enable you to play the  tests on any Android device.<br /><br />An easy-to-use Wizard will guide  you through the process of deploying your Android app to the device, in  order to start your first recording.<br /><br />You will be able to record  and execute tests over both Wi-Fi and USB connections. Testing over  Wi-Fi&nbsp;enables you to easily run your tests from one Ranorex Studio on  multiple Android devices.<br /><br /></div></div><h2>Coming Up: Testing of SAP GUI</h2><div class="csc-textpic-text">Based  on the flexible plug-in mechanism, the Ranorex tool set  functionality  grows constantly. We would like to introduce a new plug-in, which will  enable test automation of SAP GUI controls. This new plug-in will be  available online for download in the next few months.<br /><br /></div><div><img border="0" height="283" width="400" alt=""></div><img src="http://feeds.feedburner.com/~r/ranorex/~4/rR6kpTvEDTk" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/testing-of-android-apps-and-sap-gui.html</feedburner:origLink></item>
      <item>
         <title>Cross-Browser Test Automation with Ranorex</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/RQ32rV9P0z0/cross-browser-test-automation</link>
         <description>If you&amp;#8217;re testing a web application, it would naturally be best to test it with not only one but with all of the most popular browsers (cross-browser testing). This blog post will show you how to record your automated tests using a browser and then automatically execute the recorded tests with different browsers. With Ranorex [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1941</guid>
         <pubDate>Mon, 30 Jan 2012 17:32:24 +0000</pubDate>
         <content:encoded><![CDATA[<p>If you&#8217;re testing a web application, it would naturally be best to test it with not only one but with all of the most popular browsers (cross-browser testing).</p>
<p>This blog post will show you how to record your automated tests using a browser and then automatically execute the recorded tests with different browsers. With Ranorex v3.2 (and higher) you can run your tests in Internet Explorer, Mozilla Firefox, Google Chrome and Apple Safari.</p>
<div id="attachment_1987" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Run-Ranorex-Test-In-Different-Browser.png"><img class="size-medium wp-image-1987" title="Run one Ranorex Test Script in different Browser" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Run-Ranorex-Test-In-Different-Browser-546x317.png" alt="Run one Ranorex Test Script in different Browser" width="546" height="317"/></a><p class="wp-caption-text">Run one Ranorex Test Script in different Browser (Cross-Browser Testing)</p></div>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/cross-browser-test-automation#sample">Sample Test Suite Project</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/cross-browser-test-automation#multi">Cross-Browser Test</a></li>
</ul>
<p><span id="more-1941"></span></p>
<p><a rel="nofollow" id="sample"></a></p>
<h2>Sample Test Suite Project</h2>
<p>To demonstrate how to perform a multiple browser test, we will generate a small sample which enters data in our <a rel="nofollow" target="_blank" href="http://www.ranorex.com/web-testing-examples/vip/">VIP Database Test Web Application</a>, a small web application having the same functionality as the VIP Database you might know from our user guide.</p>
<p>First of all we’ll create a Test Case holding two Recordings, one for opening and one for closing the browser as setup and teardown modules.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Ranorex-Sample-Project-1.png"><img class="aligncenter size-full wp-image-1989" title="Ranorex Sample Project" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Ranorex-Sample-Project-1.png" alt="Ranorex Sample Project" width="259" height="136"/></a></p>
<p>Now we add a “OpenBrowser” action to the OpenBrowser Module with “http://www.ranorex.com/web-testing-examples/vip/” as Url and e.g. “IE” as browser.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Open-Browser-Module.png"><img class="aligncenter size-medium wp-image-1990" title="Open Browser Module" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Open-Browser-Module-546x33.png" alt="Open Browser Module" width="546" height="33"/></a></p>
<p>As next step we add a recording module validating the status String on connecting and disconnecting.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Ranorex-Sample-Project-2.png"><img class="aligncenter size-full wp-image-1992" title="Ranorex Sample Project 2" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Ranorex-Sample-Project-2.png" alt="Ranorex Sample Project 2" width="245" height="158"/></a></p>
<p>The recording module simply</p>
<ul>
<li>validates, that the status text equals “Online”,</li>
<li>disconnects,</li>
<li>validates, that the status text equals “Offline”,</li>
<li>connects again,</li>
<li>confirms to connect in the pop up window</li>
<li>and validates, that the status text equals “Online” again.</li>
</ul>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Test-Connection.png"><img class="aligncenter size-medium wp-image-1994" title="Test Connection Recording Module" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Test-Connection-546x232.png" alt="Test Connection Recording Module" width="546" height="232"/></a></p>
<p>Make sure that the RanoreXPath of your App Folder does not include any browser specific equation like &#8220;browsername=&#8230;&#8221;.</p>
<p>Make also sure to have two repository items representing the connection status text, one for “Online” and one for “Offline”. This allows you to overcome issues with delaying validation steps. In our application it takes some time that the status text changes from “connecting…” to “Online”. To make the Validation work, we can simply add the actual validation into the RanoreXPath and only validate the existence of the status text in our web page. By doing so, we are using the search timeout of the repository item to wait for the status text to change.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Test-Connection-2.png"><img class="aligncenter size-medium wp-image-1995" title="Test Connection Recording Module RanoreXPaths" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Test-Connection-2-546x29.png" alt="Test Connection Recording Module RanoreXPaths" width="546" height="29"/></a></p>
<p>Additionally to the TestConnection recording, we will generate a recording for adding VIP’s to the database. This recording will be added to a new Test Case as we want to data driven add VIP’s and do not want to open and close the browser and testing the connection with each iteration of adding a new VIP.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Ranorex-Sample-Project-3.png"><img class="aligncenter size-full wp-image-1996" title="Ranorex Sample Project 3" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Ranorex-Sample-Project-3.png" alt="Ranorex Sample Project 3" width="241" height="204"/></a></p>
<p>The recording might look something like this:</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-VIP.png"><img class="aligncenter size-medium wp-image-1998" title="Add VIPRecording Module" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-VIP-546x284.png" alt="Add VIPRecording Module" width="546" height="284"/></a></p>
<p>As we want to make our test data driven, we have to add variables which can be bound with the data from our data source.</p>
<p>The key sequences for first and last name contain the variables $FirstName and $LastName.</p>
<p>To select the category, we have to add a SetValue action and set the TagValue to the variable $Category.</p>
<p>The gender can be set by adding a variable to the RanoreXPath of the corresponding repository item.</p>
<p>Additionally, we validate the VIP count against a variable $VIP_Count.</p>
<p>After generating the recording, we create a data source for the Test Case Add_VIP’s and bind the data tables to the variables of the recording AddVIP.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-to-AddVIP1.png"><img class="aligncenter size-full wp-image-2001" title="Add Data Source to AddVIP 1" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-to-AddVIP1.png" alt="Add Data Source to AddVIP 1" width="501" height="490"/></a></p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-to-AddVIP2.png"><img class="aligncenter size-medium wp-image-2002" title="Add Data Source to AddVIP2" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-to-AddVIP2-546x479.png" alt="Add Data Source to AddVIP2" width="546" height="479"/></a></p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-to-AddVIP3.png"><img class="aligncenter size-medium wp-image-2003" title="Add Data Binding to AddVIP" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-to-AddVIP3-546x464.png" alt="Add Data Binding to AddVIP" width="546" height="464"/></a></p>
<p>As last step we add a Close Application action to the CloseBrowser Module with the application folder of the web application as repository item.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Close-Browser-Module.png"><img class="aligncenter size-medium wp-image-2006" title="Close Browser Recording Module" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Close-Browser-Module-546x15.png" alt="Close Browser Recording Module" width="546" height="15"/></a></p>
<p>Now we can execute our Test Suite Project, which:</p>
<ul>
<li>opens the web application in Internet Explorer  in the setup region,</li>
<li>performs connection tests,</li>
<li>adds 3 VIPs following the data driven approach  (the data for the 3 VIPs are stored in a simple data table),</li>
<li>validates the count of the VIPs stored in the web application</li>
<li>and closes the browser in the tear down region.</li>
</ul>
<p><a rel="nofollow" id="multi"></a></p>
<h2>Cross-Browser Test</h2>
<p>To perform these steps not only for IE but also for the other 3 browser which are supported, we first make the browser which will be started in the Recording “OpenBrowser” variable.</p>
<p>Therefore open the recording “OpenBrowser” and edit the browser which should be started. Now choose “As new Variable…” instead of “IE” and add a new Variable called BrowserName.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/add_browser_variable.png"><img class="size-medium wp-image-1949" title="Make Browser selection variable..." src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/add_browser_variable-546x124.png" alt="Make Browser selection variable..." width="546" height="124"/></a></p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/add_browser_variable2.png"><img class="size-full wp-image-1950" title="...by adding a variable &quot;BrowserName&quot;" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/add_browser_variable2.png" alt="...by adding a variable &quot;BrowserName&quot;" width="334" height="151"/></a></p>
<p>After that, add a new simple data table to the Test Case “Add_VIP_and_Validate”, holding the names of the different browsers and bind the data connector to the variable “BrowserName”.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-1.png"><img class="aligncenter size-full wp-image-2012" title="Add Data Source 1" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-1.png" alt="Add Data Source 1" width="492" height="392"/></a></p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-2.png"><img class="aligncenter size-medium wp-image-2013" title="Add Data Source 2" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-2-546x474.png" alt="Add Data Source 2" width="546" height="474"/></a></p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-3.png"><img class="aligncenter size-medium wp-image-2014" title="Add Data Binding" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Add-Data-Source-3-546x473.png" alt="Add Data Binding" width="546" height="473"/></a></p>
<p>After making the browser variable that way and binding this variable to a table holding all supported browser names, you can execute your test script for all supported browser.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Reporting.png"><img class="aligncenter size-medium wp-image-2025" title="Ranorex Reporting" src="http://www.ranorex.com/blog/wp-content/uploads/2012/01/Reporting-406x500.png" alt="Ranorex Reporting" width="406" height="500"/></a></p>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Fcross-browser-test-automation&amp;title=Cross-Browser%20Test%20Automation%20with%20Ranorex" id="wpa2a_4"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/dnWeYmmVrNs" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/RQ32rV9P0z0" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/dnWeYmmVrNs/cross-browser-test-automation</feedburner:origLink></item>
      <item>
         <title>Ranorex 3.2.1 with support for Firefox 9 released</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/ANgdM25MLyc/ranorex-321-released.html</link>
         <description>Ranorex 3.2.1 is now available and includes the following release  notes:General changes/Features
...</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 25 Jan 2012 15:53:00 +0000</pubDate>
         <content:encoded><![CDATA[<h3>Ranorex 3.2.1 is now available and includes the following release  notes:<br /><br />General changes/Features</h3><ul><li> Added support for Firefox 9.0     </li><li> Added support for SVN 1.7 working copies (SVN version configurable via Ranorex Studio settings)     </li><li> Added elements for menu- and title bars in Java AWT/Swing applications</li></ul><h3>Bugs</h3><ul><li> Fixed download of Flash debug player to use the default proxy when instrumenting Flash/Flex     </li><li> Fixed geometry calculation for Flash/Flex applications with custom scalemode and align settings     </li><li> Fixed object recognition issue with Flash/Flex control classes having an empty namespace     </li><li> Fixed tracking issue when tracking stacked Flex popup dialogs     </li><li> Cell size calculation for certain customized Flex datagrids has been improved     </li><li> Fixed object recognition problems with Flex data-bound controls contained in dynamically loaded modules     </li><li> Reduced memory consumption of Ranorex Studio (especially when dealing with large data sources)     </li><li> Fixed exception thrown when clicking on the very first char in the compiler output pad in Ranorex Studio     </li><li> Fixed duplicate output in Debug pad in Ranorex Studio     </li><li> Improved support for adding references to HTTPS web services in Ranorex Studio     </li><li> Fixed problem causing recordings to be invalid when converting a project to a different programming language     </li><li> Fixed exception thrown when renaming variables in recordings or repositories using the variable store editor     </li><li> Fixed code generation for modules, repository items, and variables if their names conflict with       programming language keywords     </li><li> Fixed exceptions thrown when setting the CheckState and Expanded attributes on MSAA elements     </li><li> Fixed EnsureVisible for tabs if multiple Firefox windows are opened and closed again     </li><li> Fixed detection of Chrome installation directory on certain system configurations     </li><li> Improved performance of object recognition for WinForms applications with many resource assemblies     </li><li> The UseCache property of newly auto-created repository folders is now correctly set to the configured default     </li><li> Improved performance and fixed a number of cosmetic issues related to the Ranorex report stylesheet     </li><li> Fixed evaluation of variables in RanoreXPaths within repositories when accessed from user code     </li><li> Fixed image capturing problem related to &quot;Aero Peek&quot; feature when perfoming image-based recording</li></ul><a rel="nofollow" target="_blank" href="http://www.ranorex.com/download.html" title="Opens internal link in current window" class="internal-link">Download Ranorex version 3.2.1 here.</a><br />(You         can find a direct download link for the latest Ranorex  version  on     the    Ranorex Studio start page.)<img src="http://feeds.feedburner.com/~r/ranorex/~4/ANgdM25MLyc" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/ranorex-321-released.html</feedburner:origLink></item>
      <item>
         <title>Ranorex 3.2 with support for Chrome, Safari and Firefox 8 released</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/L3453fUPWQA/ranorex-32-with-support-for-chrome-safari-and-firefox-8-released.html</link>
         <description>We are proud to announce that Ranorex 3.2 has been released and is now available for download.Based...</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 14 Dec 2011 13:55:00 +0000</pubDate>
         <content:encoded><![CDATA[<b>We are proud to announce that Ranorex 3.2 has been released and is now available for download.</b><br /><br />Based on the flexible plug-in mechanism, the Ranorex tool set  functionality grows constantly. This  new version extends <a rel="nofollow" target="_blank" href="http://www.ranorex.com/features/automated-testing-of-web.html" title="Opens internal link in current window" class="internal-link">automated testing of web applications</a>, and enables execution of the same test scripts in Internet  Explorer, Firefox, Chrome and Safari.<br /><br /><div><img alt="Web testing in IE, Firefox, Chrome and Safari" height="139" width="457">
<h3>Windows 8 Development Preview Metro UI</h3>
Ranorex 3.2 also provides improved support for testing the new Windows 8 Development Preview Metro user interface.<br /><br />
<div><img border="0" height="309" width="425" alt=""><br /><br />

<a rel="nofollow" target="_blank" href="http://www.ranorex.com/download/release-notes.html#c3809" title="Opens internal link in current window" class="internal-link">Read Ranorex 3.2 release notes here.</a><br /><br /><a rel="nofollow" target="_blank" href="http://www.ranorex.com/download.html" title="Opens internal link in current window" class="internal-link">Download Ranorex version 3.2 here.</a><br />(You        can find a direct download link for the latest Ranorex  version on     the    Ranorex Studio start page.) 		  			 						   				  	 				 	 			 					 				 					   				 					 					 			 					 					 			 			 	</div></div><img src="http://feeds.feedburner.com/~r/ranorex/~4/L3453fUPWQA" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/ranorex-32-with-support-for-chrome-safari-and-firefox-8-released.html</feedburner:origLink></item>
      <item>
         <title>Did you know… that you can manually generate a recording?</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/6IfUDPlLKCk/manually-generate-a-test-recording</link>
         <description>It’s possible to manually perform all of your recording actions without pressing the record button at any time. This can be accomplished by doing the following. First, you have to generate a Repository holding the UI elements you want to address in your recording. Then, you simply need to associate this repository with your recording [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1874</guid>
         <pubDate>Wed, 30 Nov 2011 09:20:18 +0000</pubDate>
         <content:encoded><![CDATA[<p>It’s possible to manually perform all of your recording actions without pressing the record button at any time. This can be accomplished by doing the following. First, you have to generate a Repository holding the UI elements you want to address in your recording. Then, you simply need to associate this repository with your recording and add actions to your recording referring to the UI elements stored in your repository.</p>
<p>The VIP database application, which is included in your Ranorex installation, is taken as a sample application in this blog to illustrate how to generate a recording and the associated repository without the use of the record button.</p>
<div id="attachment_1931" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/01_v2.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/01_v2-546x297.png" alt="Manually generate a Ranorex Recording" title="Manually generate a Ranorex Recording" width="546" height="297" class="size-medium wp-image-1931"/></a><p class="wp-caption-text">Manually generate a Ranorex Recording</p></div>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/manually-generate-a-test-recording#TheRepository">The Repository</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/manually-generate-a-test-recording#TheRecording">The Recording</a></li>
</ul>
<p><span id="more-1874"></span><br />
<a rel="nofollow" id="TheRepository"></a></p>
<h2>The Repository</h2>
<p>First of all you have to add a repository to your project (Project-&gt;Add-&gt;New Item-&gt;Repository).</p>
<p>To analyze your application and determine which UI elements are necessary for the recording, open Ranorex Spy.</p>
<p>Let’s have a look at text boxes within the application. By tracking the “first name” text box you will get following RanoreXPath:<br />
<a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/02.png"><img class="aligncenter size-full wp-image-1885" title="RanoreXPath" src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/02.png" alt="RanoreXPath" width="471" height="17"/></a></p>
<p>You can now simply add this control to your repository by right clicking on it and choosing “Add to repository”.</p>
<p>If you’d like to directly add all available text boxes to your repository, you have to add a filter to your RanoreXPath. Therefore, open the Advanced RanoreXPath Editor by clicking on the magic wand which is placed next to the RanoreXPath and uncheck the check box for “controlname” to make the RanoreXPath not only fit to this particular text box with the control name “tbFirstName”.</p>
<p>By verifying your altered RanoreXPath, you will see that 5 elements have been found. To see which controls have been found, click on “Highlight”. As you can see, not only all text boxes, but also all labels fit this RanoreXPath as all of these elements are represented with the text adapter. To filter out only the text boxes – as you do not need the labels within our recording – just check the check box “controltypename” and choose “TextBox”. By verifying this RanoreXPath, you will see that only 2 elements have been found – the 2 available text boxes.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/03.png"><img class="aligncenter size-medium wp-image-1884" title="Advanced RanoreXPath Editor" src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/03-546x388.png" alt="Advanced RanoreXPath Editor" width="546" height="388"/></a></p>
<p>After filtering the needed controls (click OK to close the Advanced RanoreXPath Editor), you can add these controls to your repository by right clicking on the parent folder of the two fitting elements in Spy and choosing “Add Matching Children to Repository”.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/04.png"><img class="aligncenter size-medium wp-image-1883" title="Add Matching Children to Repository" src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/04-506x500.png" alt="Add Matching Children to Repository" width="506" height="500"/></a></p>
<p>To learn more about the RanoreXPath and the Advanced RanoreXPath Editor please have a look at following chapters of our user guide:</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/ranorexpath.html">RanoreXPath</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/lesson-10-ranorexpath-editor.html">RanoreXPath Editor</a></li>
</ul>
<p>After adding the relevant text boxes, let’s add the list items stored in the category list box to the repository. Therefore, track a list item, select the parent list node, right click and choose “Add to Repository (incl. children).</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/05.png"><img class="aligncenter size-medium wp-image-1882" title="Add to Repository (incl. Children)" src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/05-546x470.png" alt="Add to Repository (incl. Children)" width="546" height="470"/></a></p>
<p>Now that you have the text boxes for first and last name and the list items for the different categories stored in our repository, let’s add the radio buttons for the gender and the add button to your repository.</p>
<p>After doing so, the repository should look something like this:</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/06.png"><img class="aligncenter size-medium wp-image-1881" title="Ranorex Repository" src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/06-546x198.png" alt="Ranorex Repository" width="546" height="198"/></a></p>
<p>To make your repository hierarchy cleaner, you can add corresponding folders for each type of control (Add New Item -&gt; Simple Folder):</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/07.png"><img class="aligncenter size-medium wp-image-1880" title="Tidy Repository" src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/07-546x240.png" alt="Tidy Repository" width="546" height="240"/></a></p>
<p><a rel="nofollow" id="TheRecording"></a></p>
<h2>The Recording</h2>
<p>After adding the necessary controls to the repository, it’s time for creating a recording file (Project-&gt;Add-&gt;New Item-&gt;Recording).</p>
<p>Now you have to connect the newly created recording with the repository created before. This can be done by choosing the repository from the repository list:</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/08.png"><img class="aligncenter size-medium wp-image-1879" title="Choose Repository for Recording" src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/08-546x111.png" alt="Choose Repository for Recording" width="546" height="111"/></a></p>
<p>After connecting the repository to the recording, you can start with adding actions to your recording table.</p>
<p>The first step which should be done is to start the application under test. Therefore add a “Run Application” action (Add New Action -&gt; Run Application) and choose the executable of the VIP database application.</p>
<p>After that, set the first and last name of the VIP. To do so, you can simply drag &amp; drop the wanted repository item from the repository to your recording. From the context menu that pops up choose “Key Sequence” to use the keyboard to set the value of the text box.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/091.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/091-546x413.png" alt="Add Action from Repository to Recording" title="Add Action from Repository to Recording" width="546" height="413" class="aligncenter size-medium wp-image-1922"/></a></p>
<p>To select a category drag &amp; drop the specific list item from your repository to your recording and choose “Invoke Action” as action type. As action name choose “Select” to select the given list item.</p>
<p>Choosing the gender can be handled the same way as choosing the category.</p>
<p>Pressing the add button can be performed by dragging &amp; dropping the button from the repository to the recording and choosing “Mouse” as action type.</p>
<p>Finally, you can close the application by dragging &amp; dropping the application folder from the repository to the recording and choosing “Close Application” as action type.</p>
<p>Voilà… a recording manually generated without using the record button.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/101.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/101-546x128.png" alt="Ranorex Recording" title="Ranorex Recording" width="546" height="128" class="aligncenter size-medium wp-image-1923"/></a></p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/11/11.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/11/11-546x338.png" alt="Ranorex Report" title="Ranorex Report" width="546" height="338" class="aligncenter size-medium wp-image-1928"/></a></p>
<p>As you can see, you can manually generate a recording from a repository which might be useful</p>
<ul>
<li>if you are working in teams and you are sharing one repository to keep the shared repository tidy.</li>
<li>if your application under test is based on special technologies (e.g. using GDI plug-in to identify elements) and the RanoreXPaths of automatically generated repository items often need to be adjusted in order to make them work reliably.</li>
</ul>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Fmanually-generate-a-test-recording&amp;title=Did%20you%20know%E2%80%A6%20that%20you%20can%20manually%20generate%20a%20recording%3F" id="wpa2a_6"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/YHsy1XewQ_s" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/6IfUDPlLKCk" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/YHsy1XewQ_s/manually-generate-a-test-recording</feedburner:origLink></item>
      <item>
         <title>Ranorex 3.1.2 released</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/cKcoOjqxJe0/ranorex-312-released.html</link>
         <description>Ranorex 3.1.2 is now available and includes the following release  notes:
General changes/Features...</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 16 Nov 2011 12:34:00 +0000</pubDate>
         <content:encoded><![CDATA[<h3>Ranorex 3.1.2 is now available and includes the following release  notes:</h3>
<h3>General changes/Features     </h3><ul><li> Ranorex Test Report runtime memory consumption and performance has been improved     </li><li> Improved usability for Ranorex databinding datagrid (Cut/Copy/Paste, setting values)</li></ul><h3> Bugs     </h3><ul><li> Fixed execution of test suite folders when selecting a runconfig via command line parameter     </li><li> Overriding the default report level via command line parameter now works correctly for all inheriting test cases     </li><li> Fixed a number of small issues in Ranorex Studio which caused error messages to be shown     </li><li> Fixed various problems in the Ranorex Studio debugger     </li><li> Fixed incorrect project files when adding &quot;Any CPU&quot; platform to solution/project     </li><li> References to DLLs are now stored relative to the Ranorex Test Suite path if they are not in the GAC     </li><li> The HTML &quot;label&quot; tag &quot;for&quot; attribute is now recognized correctly when using Internet Explorer     </li><li> Added support for Firefox windows opened from JavaScript and with dialog style enabled     </li><li> Fixed EnsureVisible in Flex 3 when non-scrollable containers report a non-empty scrolling region     </li><li> Fixed a bug which caused some Flex 3 IDataRenderer implementations not to be recognized     </li><li> Fixed possible hang of Ranorex in the GDI/RawText plugin when the target window is not responding     </li><li> Fixed possible hang of Ranorex when capturing background screenshots when the target window is not responding     </li><li> Added a cosmetic fix for RanoreXPath editor when path contained too many whitespaces     </li><li> Fixed attributes shown in RanoreXPath editor wizard and improved update performance     </li><li> Fixed a bug which caused the Detail property grid in Ranorex Spy to update continuously in certain situations     </li><li> Fixed a bug which caused application folders not to be created when dragging elements       with customized paths from Ranorex Spy into a repository     </li><li> Fixed a possible crash in the image-based click editor in Ranorex Recorder when the image was cropped     </li><li> Made a number of small additions/corrections to the API documentation     </li><li> Fixed repository cleanup issues related to linked repositories</li></ul><a rel="nofollow" target="_blank" href="http://www.ranorex.com/download.html" title="Opens internal link in current window" class="internal-link">Download Ranorex version 3.1.2 here.</a><br />(You        can find a direct download link for the latest Ranorex  version on     the    Ranorex Studio start page.)<img src="http://feeds.feedburner.com/~r/ranorex/~4/cKcoOjqxJe0" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/ranorex-312-released.html</feedburner:origLink></item>
      <item>
         <title>Organizing a Test Automation Project with Ranorex Test Suites</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/Nu96q3J_rPc/organizing-a-test-automation-project-with-ranorex-test-suite</link>
         <description>The Ranorex test suite enables you to easily manage your test cases, as well as build robust data-driven tests. Your test automation modules can be shared, adopted, and used within your team. Learn why Ranorex module projects are the best way to group your test modules and reuse them in different test suite projects within [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1793</guid>
         <pubDate>Mon, 31 Oct 2011 09:53:03 +0000</pubDate>
         <content:encoded><![CDATA[<p>The Ranorex test suite enables you to easily manage your test cases, as well as build robust data-driven tests. Your test automation modules can be shared, adopted, and used within your team. Learn why Ranorex module projects are the best way to group your test modules and reuse them in different test suite projects within your teams.</p>
<div id="attachment_1794" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic0.jpg"><img class="size-medium wp-image-1794 " src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic0-546x282.jpg" alt="Organizing a Test Automation Project with Ranorex Test Suite" width="546" height="282"/></a><p class="wp-caption-text">Organizing a Test Automation Project with Ranorex Test Suite</p></div>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/organizing-a-test-automation-project-with-ranorex-test-suite#DifferentViews">Different Views</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/organizing-a-test-automation-project-with-ranorex-test-suite#SeparationOfModules">Separation of Modules</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/organizing-a-test-automation-project-with-ranorex-test-suite#MultipleProjectsOneSolution">Multiple Projects, One Solution</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/organizing-a-test-automation-project-with-ranorex-test-suite#ExecutionOnRuntimeMachines">Execution on Runtime Machines</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/organizing-a-test-automation-project-with-ranorex-test-suite#SameSolutionSifferentUsers">Working on the same solution with different users</a></li>
</ul>
<p><span id="more-1793"></span><br />
<a rel="nofollow" id="DifferentViews"></a></p>
<h2>Different Views</h2>
<p>In order to perform professional testing of an extensive software product, it can be beneficial to separate the views of the testing process.</p>
<p>On the one hand there might be a team consisting of e.g. a Test Automation Engineer and some testers. This team is responsible for covering all conceivable work flows and dividing these workflows into small, reusable modules.</p>
<p>On the other hand there might be a tester. The tester, for his part, is responsible for testing specific work flows processed by the software under test. As the team already has provided all necessary modules, the tester only has to put the desired modules together, to fulfill the required work flow.</p>
<div id="attachment_1795" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic1.jpg"><img class="size-medium wp-image-1795" title="Different Views" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic1-546x362.jpg" alt="Different Views" width="546" height="362"/></a><p class="wp-caption-text">Different Views</p></div>
<p><a rel="nofollow" id="SeparationOfModules"></a></p>
<h2>Separation of Modules</h2>
<p>As mentioned before, it is useful to separate specific work flows in small self-contained modules in order for them to be reused in different scenarios.</p>
<p>These modules can either be recordings or user code modules which will be prepared by a team to allow the tester a rapid generation of different workflows.</p>
<p>To allow a more general approach the team can add variables to the particular modules. The tester only has to provide values by parameters or a data source and to bind the specific columns of this data source to the specific variables.</p>
<p>For more details about data driven testing and parameter usage please have a look at following chapter in our user guide: <a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/lesson-3-data-driven-testing.html">Data-Driven Test Automation</a></p>
<div id="attachment_1796" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic2.jpg"><img class="size-medium wp-image-1796" title="Separation of Modules" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic2-546x362.jpg" alt="Separation of Modules" width="546" height="362"/></a><p class="wp-caption-text">Separation of Modules</p></div>
<p><a rel="nofollow" id="MultipleProjectsOneSolution"></a></p>
<h2>Multiple Projects, One Solution</h2>
<h3>DLL Type Projects</h3>
<p>To allow collaboration of a team and the tester, the team has to provide the generated modules to the tester.</p>
<p>This can be established by providing Ranorex Test Suite libraries holding specific test modules.</p>
<p>These libraries can be referenced in the Test Suite project of the tester and all modules held by these libraries will be available for the tester to add to his specific test cases.</p>
<p style="text-align:center;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic3.jpg"><img class="size-medium wp-image-1797 aligncenter" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic3-546x394.jpg" alt="Test Suite Library" width="546" height="394"/></a></p>
<p>These libraries include all recording and user code modules generated by the team as well as the repository holding the elements the modules are accessing.</p>
<p>Let’s have a look at Ranorex Studio and how such a test project with several Test Suite libraries would look like.</p>
<p>First of all the Test Suite libraries have to be referenced to make them reusable for the tester.</p>
<p>This can be done by opening the .Net Assembly Browser“  tab at the Add Reference” dialog (Project-&gt;Add Reference) and simply adding the generated DLL files. After this step the DLLs should be viewable in the reference list in the project view pad.</p>
<div id="attachment_1800" class="wp-caption aligncenter" style="width:241px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/screen1.jpg"><img class="size-full wp-image-1800" title="Reference list in Project View" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/screen1.jpg" alt="Reference list in Project View" width="231" height="371"/></a><p class="wp-caption-text">Reference list in Project View</p></div>
<p>The referenced Test Suite libraries are also viewable in the Ranorex Module pad with all their modules and variables.</p>
<div id="attachment_1801" class="wp-caption aligncenter" style="width:211px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/screen2.jpg"><img class="size-full wp-image-1801" title="Module Browser View" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/screen2.jpg" alt="Module Browser View" width="201" height="356"/></a><p class="wp-caption-text">Module Browser View</p></div>
<p>The tester can now simply drag and drop the individual modules from the module browser to his Test Suite to construct the specific test cases.</p>
<div id="attachment_1802" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/screen3.jpg"><img class="size-medium wp-image-1802" title="Drag/Drop Modules form Module Browser to Test Suite" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/screen3-546x447.jpg" alt="Drag/Drop Modules form Module Browser to Test Suite" width="546" height="447"/></a><p class="wp-caption-text">Drag/Drop Modules form Module Browser to Test Suite</p></div>
<h3>EXE Type Projects</h3>
<p>To handle different test scenarios you can add several Test Suite configurations for your Test Suite.</p>
<p>By modifying the Test Suite configurations, different test cases or folders in your Test Suite can be selected to be executed.</p>
<p>Have a look at following chapter of our user guide to learn more about Test Suite configurations: <a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/lesson-4-ranorex-test-suite.html#c3019">Running a Test Suite</a></p>
<p>If modifying the Test Suite configurations does not fulfill the requirements, it’s also possible to add several Test Suite projects to one solution.</p>
<p>Each of these Test Suite projects in a solution will then generate an executable.</p>
<div id="attachment_1798" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic4.jpg"><img class="size-medium wp-image-1798" title="Exe Type Projects" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic4-546x364.jpg" alt="Exe Type Projects" width="546" height="364"/></a><p class="wp-caption-text">Exe Type Projects</p></div>
<div id="attachment_1803" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/screen4.jpg"><img class="size-medium wp-image-1803" title="Ranorex Solution with several Test Suite Projects" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/screen4-546x362.jpg" alt="Ranorex Solution with several Test Suite Projects" width="546" height="362"/></a><p class="wp-caption-text">Ranorex Solution with several Test Suite Projects</p></div>
<p>Additional to the automatically generated ones you can add other project relevant files to your projects, like your application under test or files holding the test data provided by your data connectors.</p>
<p>To ensure that these files will be available within the test project by distributing it on other machines &#8211; as described in the next chapter &#8211; you have to open the properties tab of the added file and set the &#8220;Copy to output directory&#8221; option to &#8220;Always&#8221;.</p>
<h2>Execution on Runtime Machines</h2>
<p>The generated test projects can be distributed to every machine, which has at least the Ranorex Runtime License installed.</p>
<p>To execute a test project on a runtime machine, you have to copy the executable (*.exe), the Test Suite file (*.rxtst) and the used libraries (*.dll) to a folder on the machine.</p>
<p>These files are by default already in the output folder of your project.</p>
<p>There are two different methods of executing a test project on a runtime machine:</p>
<ul>
<li>Executing the test project via command line as described in following chapter in our user guide: <a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/lesson-4-ranorex-test-suite.html#c3581">Running Test via Command Line</a></li>
<li>Executing the test project via the Ranorex Test Suite Runner as described in following chapter in our user guide: <a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/lesson-4-ranorex-test-suite.html#c3579">Ranorex Test Suite Runner</a></li>
</ul>
<div id="attachment_1799" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic5.jpg"><img class="size-medium wp-image-1799" title="Execution on Runtime Machines" src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/graphic5-546x364.jpg" alt="Execution on Runtime Machines" width="546" height="364"/></a><p class="wp-caption-text">Execution on Runtime Machines</p></div>
<p><a rel="nofollow" id="SameSolutionSifferentUsers"></a></p>
<h2>Working on the same solution with different users</h2>
<p>As illustrated in this article, using libraries it is possible to share a whole Ranorex Solution between the team and several testers. The team provides libraries in form of DLLs which are referenced by the tester in the Test Suite project.<br />
That means everybody (testers and team) is working on the same Ranorex Solution.</p>
<div id="attachment_1870" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/RanorexWithSVN1.jpg"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/RanorexWithSVN1-546x478.jpg" alt="Working on same Ranorex Solution with different user" title="Working on same Ranorex Solution with different user" width="342" height="300" class="size-medium wp-image-1870"/></a><p class="wp-caption-text">Working on same Ranorex Solution with different user</p></div>
<p>To make this scenario work comfortable, it’s recommended to use a source versioning system like SVN (which integrates in Ranorex Studio), having the advantages of</p>
<ul>
<li>making the history of all changes made on your project visible</li>
<li>providing backup functionality</li>
<li>preventing security issues on network shares (source code checked out locally)</li>
</ul>
<p>to name some of them.</p>
<p>You can find some hints regarding Ranorex and SVN settings at <a rel="nofollow" target="_blank" href="http://noam.kfir.cc/blog/2011/08/30/better-ranorex-studio-settings-for-subversion">this blog post</a>.</p>
<div id="attachment_1871" class="wp-caption aligncenter" style="width:556px;"><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/10/RanorexWithSVN2.jpg"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/10/RanorexWithSVN2-546x364.jpg" alt="Using source versioning system" title="Using source versioning system" width="546" height="364" class="size-medium wp-image-1871"/></a><p class="wp-caption-text">Using source versioning system</p></div>
<p>By following the mentioned approaches it will be easy for you to organize a professional testing environment for your extensive software project.</p>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Forganizing-a-test-automation-project-with-ranorex-test-suite&amp;title=Organizing%20a%20Test%20Automation%20Project%20with%20Ranorex%20Test%20Suites" id="wpa2a_8"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/CawSVJ0wW_w" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/Nu96q3J_rPc" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/CawSVJ0wW_w/organizing-a-test-automation-project-with-ranorex-test-suite</feedburner:origLink></item>
      <item>
         <title>Ranorex 3.1.1 with support for Firefox 7 released</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/8t_lR-nLSBs/ranorex-311-with-support-for-firefox-7-released.html</link>
         <description>Ranorex 3.1.1 is now available and includes the following release  notes:
General...</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 13 Oct 2011 08:52:00 +0000</pubDate>
         <content:encoded><![CDATA[<h3>Ranorex 3.1.1 is now available and includes the following release  notes:</h3>
<h3>General changes/Features</h3><ul><li> Added support for Firefox 7     </li><li> The object recognition of the GDI/Rawtext plugin has been improved     </li><li> Java applets are now supported when &quot;next-gen&quot; plugin hosting is turned off in the Java Control Panel     </li><li> The editor for image based click and validation actions now supports loading of external images</li></ul><h3>Bugs</h3><ul><li> Quoted testsuite parameter values passed per command line are now properly supported     </li><li> Fixed a number of cosmetic bugs in the Ranorex Data Binding editor     </li><li> Performance for the IE web plugin has been improved     </li><li> General Ranorex Studio stability has been improved     </li><li> User code file namespaces are now updated correctly in Ranorex Studio     </li><li> Fixed object recognition issues for some Java applets which were much larger than their container element     </li><li> Fixed a bug in Flex 3 automation which caused EnsureVisible to scroll non-scrollable containers     </li><li> Fixed encoding of non-printable characters in Ranorex report files     </li><li> Inline API documentation in Ranorex Studio code editor for .Net 4.0 assemblies is now shown correctly     </li><li> Fixed rare exceptions thrown when renaming variables within the variable editor     </li><li> Fixed issues where recordings with embedded repository are not being marked dirty in Ranorex Studio     </li><li> Fixed reloading of files in Ranorex Studio if they are changed externally     </li><li> Fixed data binding if there are parameters and data source columns with the same name in a parent test case </li></ul><a rel="nofollow" target="_blank" href="http://www.ranorex.com/download.html" title="Opens internal link in current window" class="internal-link">Download Ranorex version 3.1 here.</a><br />(You        can find a direct download link for the latest Ranorex  version on     the    Ranorex Studio start page.)<img src="http://feeds.feedburner.com/~r/ranorex/~4/8t_lR-nLSBs" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/ranorex-311-with-support-for-firefox-7-released.html</feedburner:origLink></item>
      <item>
         <title>Ranorex 3.1 with support for Java and Firefox 6 released</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/0-UBzlATXfE/ranorex-31-with-support-for-java-and-firefox-6-released.html</link>
         <description>We are proud to announce that Ranorex 3.1 has been released and is now available for download.This ...</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 31 Aug 2011 09:16:00 +0000</pubDate>
         <content:encoded><![CDATA[<b>We are proud to announce that Ranorex 3.1 has been released and is now available for download.</b><br /><br />This  new version supports testing of web applications in the latest versions  of the Firefox browser and has the Java Plug-In included which allows <a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/technology-instrumentation/testing-of-java-applications.html" title="Opens internal link in current window" class="internal-link">  testing of Java Swing and Java AWT  applications</a>.<br /><br />Furthermore, a new <a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/instrumentation-wizard.html" title="Opens internal link in current window" class="internal-link">Ranorex Instrumentation Wizard</a> helps you with  instrumenting these technologies, to ensure optimal object recognition  and consequently robust test automation projects.
<h3><b>Support for Mozilla Firefox (4, 5, and 6), <b>Java Swing and Java AWT Applications</b></b></h3>
<h3><b><img height="70" width="73" alt="">&nbsp; &nbsp;&nbsp;&nbsp;</b><a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/technology-instrumentation/testing-of-java-applications.html" title="Opens internal link in current window" class="internal-link"><img alt="Java Testing" height="101" width="55"></a><br /><br /><b><br />Ranorex Instrumentation Wizard</b></h3>
<b><br /><a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/instrumentation-wizard.html" title="Opens internal link in current window" class="internal-link"><img alt="Instrumentation Wizard" title="Instrumentation Wizard" height="197" width="262"></a><br /><br /></b>The Ranorex Instrumentation Wizard is a tool which helps you  with instrumentation for Java- and Flash/Flex applications. This instrumentation will ensure optimal object recognition  and consequently robust test automation projects.<a rel="nofollow" target="_blank" href="http://www.ranorex.com/download.html" title="Opens internal link in current window" class="internal-link"><br /><br />Download Ranorex version 3.1 here.</a><br />(You        can find a direct download link for the latest Ranorex  version on     the    Ranorex Studio start page.)<img src="http://feeds.feedburner.com/~r/ranorex/~4/0-UBzlATXfE" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://www.ranorex.com/news/article/ranorex-31-with-support-for-java-and-firefox-6-released.html</feedburner:origLink></item>
      <item>
         <title>Flash/Flex Automation with the New Ranorex Preloader</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/cy1ybsh1QjU/flashflex-automation-with-the-new-ranorex-preloader</link>
         <description>Ranorex has developed a new, more comfortable way of Flash/Flex instrumentation. This alternative way makes it possible to automate Flash/Flex based applications without modifying the application itself. To automate your application this way, you have to install the Adobe Debug Flash Player and use the new Ranorex Preloader for all Flash/Flex applications. Set up Preloader [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1641</guid>
         <pubDate>Mon, 30 May 2011 14:59:02 +0000</pubDate>
         <content:encoded><![CDATA[<p>Ranorex has developed a <strong>new, more comfortable way of Flash/Flex instrumentation</strong>. This alternative way makes it possible to automate Flash/Flex based applications <strong>without modifying the application</strong> itself.</p>
<p>To automate your application this way, you have to install the Adobe <strong>Debug Flash Player</strong> and use the new <strong>Ranorex Preloader</strong> for all Flash/Flex applications.</p>
<p><img class="alignnone size-full wp-image-1697" title="Flash-Flex-preloader" src="http://www.ranorex.com/blog/wp-content/uploads/2011/05/Flash-Flex-preloader.jpg" alt="Flash/Flex Automation" width="546" height="360"/></p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/flashflex-automation-with-the-new-ranorex-preloader#setup">Set up Preloader</a></li>
</ul>
<p><span id="more-1641"></span></p>
<div style="margin:15px 0pt;padding:10px 20px;background-color:rgb(255, 255, 140);" class="download-form">
	  <b>Ranorex 3.1 comes with an instrumentation wizard which will setup the needed files and configurations for you.</b>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/instrumentation-wizard/adobe-flash-flex.html">Please see the Adobe Flash/Flex instrumentation wizard documentation page</a></p>
</div>
<p><a rel="nofollow" id="setup"></a></p>
<h3><a rel="nofollow" id="setup">Setting up the Ranorex Preloader:</a></h3>
<p>&nbsp;</p>
<ol>
<li><strong>Install the Adobe Debug Flash Player</strong> on the machine on which you would  like to record and execute Ranorex test scripts and for all browsers you  would like to test with. The installers are available on <a rel="nofollow" target="_blank" href="http://www.adobe.com/support/flashplayer/downloads.html">Adobe&#8217;s download page</a>; the following are the links to the Debug Player 10 for <a rel="nofollow" target="_blank" href="http://www.ranorex.com/flashplayer10-debug-IE">Internet Explorer</a> and <a rel="nofollow" target="_blank" href="http://www.ranorex.com/flashplayer10-debug-FF">Firefox</a>.</li>
<li><strong>Download the Ranorex preloader package<a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/05/RxPreloader.zip">“RxPreloader.zip” (containing RanorexAutomation.swf and RanorexAutomation.swc&#8221;)</a></strong>, save it to your local drive and extract it (in the following referred to as <em>preloader location</em>); in this example I will use “C:&#92;FlashFlex&#92;RanorexAutomation.swf” for the preloader location. Remember the location you placed the RanorexAutomation.swf file to, you will need it in the next steps!</li>
<li><strong>Open your user profile directory %UserProfile%</strong>, e.g. by opening Windows Explorer and copying the string <em>%UserProfile%</em> into the address bar.</li>
<li><strong>Create a new file called „mm.cfg” in your user profile directory</strong> and insert the following line of code, where “C:&#92;FlashFlex&#92;RanorexAutomation.swf” needs to be replaced by the preloader location from step 2:
<pre>PreloadSwf= C:&#92;FlashFlex&#92;RanorexAutomation.swf</pre>
<p>Additional to this configuration entry you can enable the logging mechanisms of the Adobe Debug Flash Player, which might be helpful if you have any problems with this kind of instrumentation. In such a case you can then simply provide this logging information to our support team. To enable logging you have to add the following line of code to your “mm.cfg” file:</p>
<pre>TraceOutputFileEnable=1</pre>
<p>This additional configuration entry forces the Debug Player to create a log file at following location:<br />
C:&#92;Users&#92;username&#92;AppData&#92;Roaming&#92;Macromedia&#92;Flash Player&#92;Logs</li>
<li><strong>Open the following link and add the preloader location folder</strong> (from step 2), which contains the RanorexAutomation.swf file, to the trusted locations, for my example that is “C:&#92;FlashFlex”:<br />
<a rel="nofollow" target="_blank" href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065">http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065</a></li>
</ol>
<p>After performing these steps you should be able to automate any Flash/Flex based application without any modification to the application. To verify that everything went right, you can use Ranorex Spy and track some controls within a Flash/Flex application (e.g. <a rel="nofollow" target="_blank" href="http://www.adobe.com/devnet/actionscript/samples/interactivity_1.html">this Flash example</a>).</p>
<p>The new Ranorex Preloader can also be used as “Automation Lib” or as “Module” the same way as described in our Flash/Flex Technology instrumentation chapter within the Ranorex User Guide (use the .swf or .swc file stored in <a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/05/RxPreloader.zip">“RxPreloader.zip”</a> instead of the files located in the Bin directory of your Ranorex installation):</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/flash-flex-testing.html#c2245">Automation Lib</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/flash-flex-testing.html#c2739">Module</a></li>
</ul>
<p><strong>Please note</strong> when using the Adobe Debug Flash Player you might get some error messages that are not shown by the normal Flash Player. These error messages are based on the fact that the Debug Player is more verbose regarding error handling than the normal Flash Player. The shown error messages are caused by the Flash application and are usually not referable to the Ranorex instrumentation.</p>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Fflashflex-automation-with-the-new-ranorex-preloader&amp;title=Flash%2FFlex%20Automation%20with%20the%20New%20Ranorex%20Preloader" id="wpa2a_10"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/l6z0KG06OCU" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/cy1ybsh1QjU" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/l6z0KG06OCU/flashflex-automation-with-the-new-ranorex-preloader</feedburner:origLink></item>
      <item>
         <title>Working with Ranorex and Team Foundation Server</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/_RZi10N_goY/working-with-ranorex-and-team-foundation-server</link>
         <description>As Ranorex projects only consist of text files, which facilitates merging and comparing changes within files, basically any kind of software configuration management (SCM) tool can be used with Ranorex. Regarding Team Foundation Server Ranorex has the advantage that its project format is the same as that of Visual Studio 2008. The important in advance: [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1497</guid>
         <pubDate>Wed, 11 May 2011 13:07:16 +0000</pubDate>
         <content:encoded><![CDATA[<p>As Ranorex projects only consist of text files, which facilitates merging and comparing changes within files, basically any kind of <strong>software configuration management (SCM) </strong>tool can be used with Ranorex. Regarding Team Foundation Server Ranorex has the advantage that its project format is the same as that of Visual Studio 2008.</p>
<div><strong>The important in advance:</strong> You must check out a complete project before you can open and change it in Ranorex Studio.</div>
<p class="topic-title first"><strong>Contents</strong></p>
<ul class="simple">
<li><a rel="nofollow" id="id1" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/working-with-ranorex-and-team-foundation-server#walkthrough">Walkthrough</a></li>
<li><a rel="nofollow" id="id2" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/working-with-ranorex-and-team-foundation-server#summary">Summary</a><span id="more-1497"></span></li>
</ul>
<h3><a rel="nofollow" class="toc-backref" href="#walkthrough" id="walkthrough">Walkthrough</a></h3>
<p>The following is a walkthrough about how to keep Ranorex projects in TFS.</p>
<p>There are the following <strong>Team Foundation Server </strong>clients: the standalone Team Foundation Explorer and Visual Studio. I use Visual Studio 2010 in this blog.</p>
<p>In Visual Studio open the Team Explorer, right click, make a <cite>New Team Project</cite> and fill in the dialog that will pop up. I will add the Ranorex 3.0 samples to the new team project later.</p>
<p>After having made a new team project you will find <cite>Source Control</cite> underneath the new entry. Double-click on it to open the source control explorer. Instead of the Solution Explorer you can also use this view to work with TFS.</p>
<p>In Visual Studio make a blank solution by doing</p>
<blockquote>
<ul class="simple">
<li>File / New / Project / Other Project Types / Visual Studio Solutions / Blank Solution</li>
</ul>
</blockquote>
<p>Then add Ranorex projects. I add the sample projects that come with Ranorex 3.0.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/add_existing_project.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/add_existing_project-546x263.png" alt="image2"/></a></p>
<p>For example <cite>VIPTestSuite.csproj</cite>.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/choose_project.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/choose_project.png" alt="image3"/></a></p>
<p>The Ranorex Project Format is still that of Visual Studio 2008. So there will be a conversion dialog. <strong>After conversion you will still be able to open it in Ranorex Studio 3.0.</strong></p>
<p>You can add as many projects to the solution as you like. I have added four projects.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/projects_in_vs.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/projects_in_vs.png" alt="image5"/></a></p>
<p>Right-click on the solution and choose <cite>Add Solution to Source Control &#8230;</cite> to add all projects to TFS.</p>
<p>The projects are added, but not yet checked in. You can right-click on the solution and choose <cite>Check In &#8230;</cite> from the context menu.<br />
Or you can open the View / Other Windows / <cite>Pending Changes</cite> tool window.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/checkin_pendingchanges.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/checkin_pendingchanges-546x169.png" alt="image9"/></a></p>
<p>Before you open and edit a project in Ranorex Studio you must <strong>check out the whole project</strong>. To do that right click on the project in the solution explorer and choose <cite>Check Out for Edit</cite>.</p>
<p>You can now make changes in Ranorex Studio. Check in using Visual Studio Solution Explorer or Source Control Explorer when you are done with them.</p>
<p>In Visual Studio you can look at the history of your changes.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/view_history.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/view_history.png" alt="image10"/></a></p>
<p>Changesets will be listed in the history view.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/history_in_vs.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/history_in_vs-546x123.png" alt="image11"/></a></p>
<p>Go to <cite>Changeset Details &#8230;</cite> to see individual files.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/rxrec_history.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/rxrec_history-546x139.png" alt="image12"/></a></p>
<p>Compare <cite>with previous version</cite> to see the changes in a file.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/changeset_details.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/changeset_details-546x387.png" alt="image13"/></a></p>
<p>Here is my change in the <tt class="docutils literal">rxrec</tt> file.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/compare_rxrec.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/compare_rxrec-546x129.png" alt="image14"/></a></p>
<h3><a rel="nofollow" class="toc-backref" href="#summary" id="summary">Summary</a></h3>
<p>This walkthrough showed how to use TFS with Ranorex Studio Projects. In a similar manner any other SCM tool can be used for Ranorex Studio projects:</p>
<ul>
<li>Add the project to SCM using an SCM specific client</li>
<li>Before editing in Ranorex Studio, check out all files using the SCM specific client (or keep checked-out, i.e. writable, making this step unnecessary)</li>
<li>Make changes to the Ranorex Studio projects</li>
<li>Check in changes using the SCM specific client again</li>
</ul>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Fworking-with-ranorex-and-team-foundation-server&amp;title=Working%20with%20Ranorex%20and%20Team%20Foundation%20Server" id="wpa2a_12"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/qT8gihMt_KM" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/_RZi10N_goY" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/qT8gihMt_KM/working-with-ranorex-and-team-foundation-server</feedburner:origLink></item>
      <item>
         <title>Combining Ranorex 3.0 and Visual Studio 2010 for UI Unit Testing</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/JUU4EWfwTTQ/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing</link>
         <description>Ranorex Studio and Visual Studio are working together very well. The Ranorex Studio Project and Solution format is that of Visual Studio. You might want to open a Ranorex Project in VS to commit it to Team Foundation Server (TFS) of which VS is a natural client. You can also use MSBuild to build the [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1453</guid>
         <pubDate>Mon, 28 Mar 2011 13:02:55 +0000</pubDate>
         <content:encoded><![CDATA[<p>Ranorex Studio and Visual Studio are working together very well.</p>
<ol>
<li>The Ranorex Studio Project and Solution format is that of Visual Studio. You might want to open a Ranorex Project in VS to commit it to Team Foundation Server (TFS) of which VS is a natural client. You can also use MSBuild to build the Ranorex Project.</li>
<li>The EXE or DLL that Ranorex produces is a .NET Assembly, which can be used in VS.</li>
<li>An EXE or DLL that Visual Studio produces can be referenced in Ranorex Studio.</li>
</ol>
<p>In this blog I want to take advantage of the second point in this list. I show work flows to do unit testing in Visual Studio by referencing .NET Assemblies produced with Ranorex Studio.</p>
<div id="contents" class="contents topic">
<p class="topic-title first"><strong>Contents</strong></p>
<ul class="simple">
<li><a rel="nofollow" id="id1" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing#sample-project">Sample Project</a></li>
<li><a rel="nofollow" id="id2" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing#the-ranorex-studio-project">The Ranorex Studio Project</a></li>
<li><a rel="nofollow" id="id3" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing#visual-studio-and-nunit-attribute-based-test-assemblies">Visual Studio and NUnit Attribute-based Test Assemblies</a></li>
<li><a rel="nofollow" id="id4" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing#ranorex-assemblies-in-visual-studio-projects">Ranorex Tests in Visual Studio Projects</a>
<ul>
<li><a rel="nofollow" id="id5" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing#recordings-or-user-code-modules">Recordings or User Code Modules</a></li>
<li><a rel="nofollow" id="id6" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing#ranorex-test-suite">Ranorex Test Suite</a></li>
</ul>
</li>
<li><a rel="nofollow" id="id7" class="reference internal" target="_blank" href="http://www.ranorex.com/blog/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing#links">Links</a><span id="more-1453"></span></li>
</ul>
</div>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/03/Ranorex_in_vs_with_comments.png"><img class="aligncenter size-medium wp-image-1568" src="http://www.ranorex.com/blog/wp-content/uploads/2011/03/Ranorex_in_vs_with_comments-546x472.png" alt="Ranorex_in_vs_with_comments" height="472"/></a></p>
<h3><a rel="nofollow" class="toc-backref" href="#id1">Sample Project</a></h3>
<div id="sample-project" class="section">
<p>For the purpose of this blog I use the VIPTestSuite Sample that comes with Ranorex 3.0.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/sample.png"><img src="http://www.ranorex.com/blog/wp-content/uploads/2011/02/sample-546x288.png" alt="VIPTestSuiteSample"/></a></p>
<p>This Ranorex sample project&#8217;s assembly is used in this Visual Studio 2010 project: <a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/02/VIP_VS_Test.zip">VIP_VS_Test</a></p>
<p>To run the project you need Visual Studio 2010 and Ranorex 3.0.</p>
<ul>
<li>
<p class="first">Open Ranorex 3.0</p>
</li>
<li>
<p class="first">In the start page choose the sample as shown in the above screenshot</p>
</li>
<li>
<p class="first">Build the Ranorex VIPTestSuite Sample (Menu: Build/Build Solution)</p>
</li>
<li>
<p class="first">Open the downloaded and unzipped Visual Studio 2010 project</p>
</li>
<li>
<p class="first">Build the Visual Studio Test Project (Menu: Build/Build Solution)</p>
</li>
<li>
<p class="first">Run a test from within Visual Studio 2010</p>
</li>
<li>
<p class="first">Or run a test with MSTest :</p>
<pre class="csharp">mstest /testcontainer:VIP_VS_Test.dll /test:Test_AddAndDeleteSingleVIP</pre>
</li>
</ul>
</div>
<div id="the-ranorex-studio-project" class="section">
<h3><a rel="nofollow" class="toc-backref" href="#id2">The Ranorex Studio Project</a></h3>
<p>Let&#8217;s look at a Ranorex Studio Project. It contains:</p>
<ul>
<li>
<p class="first">XML files</p>
<blockquote>
<ul>
<li>
<p class="first">Repositories (<tt>rxrep</tt> files)</p>
</li>
<li>
<p class="first">Recordings (<tt>rxrec</tt> files)</p>
<p>Recording files have a reference to a repository file.</li>
<li>
<p class="first">Reports</p>
</li>
</ul>
</blockquote>
</li>
<li>
<p class="first">.NET source code files (cs or vb files), generated code and user code</p>
</li>
<li>
<p class="first">.NET assemblies as output files</p>
</li>
</ul>
<p>What in such a project is usable from outside Ranorex Studio?</p>
<ul>
<li>
<p class="first"><strong>XML files: no.</strong></p>
<p>The XML format is only of importance within Ranorex Studio, for the Recorder, the Spy and the Editors.</p>
<p><strong>Note:</strong> With Ranorex Studio 3.0 the <strong>test suite file</strong> (<tt>.rxtst</tt>) was added. This is special in the sense that no .NET code is generated for it. It stays a XML file. Its purpose is Test Case Management and t is thus an alternative to NUnit&#8217;s and Visual Studio&#8217;s Test Case Management. It is very good to organize data driven test cases.</li>
<li>
<p class="first"><strong>.NET source code: yes, but &#8230;</strong></p>
<p>The .NET Source Code files can be used in Visual Studio. Actually some people do program in VS using the Ranorex API. But by doing so one looses the advantages of the integrated test development that Ranorex Studio provides, the automatic synchronization between the XML files (repository or recording) and the code, the test suite, &#8230;</li>
<li>
<p class="first"><strong>.NET assemblies: yes</strong></p>
<p>The .NET assemblies produced by Ranorex Studio are well confined entities in a standardized format, that can be referenced by other .NET projects, be it from Ranorex Studio or Visual Studio. The assembly contains all the classes for the recordings and the repository and can be used from C# or Visual Basic or any other .NET language.</li>
</ul>
</div>
<div id="visual-studio-and-nunit-attribute-based-test-assemblies" class="section">
<h3><a rel="nofollow" class="toc-backref" href="#id3">Visual Studio and NUnit Attribute-based Test Assemblies</a></h3>
<p>Given the new Test Management in Ranorex Studio, what could induce a tester to use Ranorex Assemblies in Visual Studio or NUnit?</p>
<ul class="simple">
<li>Better integration with other tools, open source or proprietary, for continuous integration (<a rel="nofollow" class="reference external" target="_blank" href="http://cruisecontrol.sourceforge.net/">CruiseControl</a>, <a rel="nofollow" class="reference external" target="_blank" href="http://hudson-ci.org/">Hudson</a>, &#8230;) or test management (<a rel="nofollow" class="reference external" target="_blank" href="http://msdn.microsoft.com/en-us/library/bb385901.aspx">MS Test Manager</a>, <a rel="nofollow" class="reference external" target="_blank" href="http://www8.hp.com/us/en/software/software-solution.html?compURI=tcm:245-937026">HP Lifecycle Management</a>, <a rel="nofollow" class="reference external" target="_blank" href="http://blog.testlink.org/">TestLink</a> , &#8230;)</li>
<li>Unit Testing</li>
</ul>
<p>In VS 2008 there is unit test support and this got some more attention in VS 2010. VS 2010 Ultimate provides full coverage of life cycle management and testing tools. The NUnit Test Framework also uses .NET and has wide acceptance. What they don&#8217;t provide is a support for all the technologies that Ranorex provides. In NUnit and Visual Studio test assemblies tests are methods with attributes that mark them as test methods. Visual Studio test assemblies use these attributes</p>
<ul class="simple">
<li>[TestClass()] for the containing class</li>
<li>[TestMethod()] for the test method</li>
<li>[TestInitialize()] for a method that does initializations</li>
<li>[TestCleanup()] for a method that restores the previous state</li>
</ul>
<p>Tests from such assemblies can then be started with<a rel="nofollow" class="reference external" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms182489(v=VS.100).aspx"> MSTest</a>.exe. To start tests using the <a rel="nofollow" class="reference external" target="_blank" href="http://www.nunit.org/">NUnit</a> framework (via console or GUI) the following attributes must be used:</p>
<ul class="simple">
<li>[TestFixture()]</li>
<li>[Test]</li>
<li>[SetUp()]</li>
<li>[TearDown()]</li>
</ul>
<p>The test drivers (MsTest.exe or nunit-console.exe) execute the tests and make a report file. That is a .trx file for MsTest.exe and a NUnit XML file for NUnit. Both of these formats, but more so the latter, can be recognized by popular Continuous Integration Frameworks, like CruiseControl and Hudson.</p>
</div>
<div id="ranorex-assemblies-in-visual-studio-projects" class="section">
<h3><a rel="nofollow" class="toc-backref" href="#id4">Ranorex Tests in Visual Studio Projects</a></h3>
<p>When working with both, Ranorex Studio and Visual Studio, I would recommend the following workflow:</p>
<ol class="arabic">
<li>
<p class="first">Create a test solution with Ranorex Studio.</p>
</li>
<li>
<p class="first">Edit and extend tests in Ranorex Studio.</p>
</li>
<li>
<p class="first">Compile</p>
</li>
<li>
<p class="first">Create a Test Project in Visual Studio</p>
<blockquote>
<ul class="simple">
<li>Add the ranorex assembly as reference (exe or dll)</li>
<li>Add Ranorex.Core.dll as reference</li>
<li>&#8230;</li>
<li>For test suite projects: make a text resource referencing your Ranorex Studio&#8217;s rxtst file</li>
</ul>
</blockquote>
</li>
<li>
<p class="first">Edit and extend tests in Ranorex Studio.</p>
</li>
<li>
<p class="first">Compile</p>
</li>
<li>
<p class="first">Adapt Visual Studio projects to the changes in Ranorex Studio</p>
</li>
<li>
<p class="first">Repeat the last three steps</p>
</li>
</ol>
<p><strong>Note:</strong> When you run a test from within Visual Studio the file handle is not released. In order to compile again you need to restart Visual Studio.</p>
<p>In order to have an abort key, you need to set it in the constructor of the test class. This requires a reference to the System.Windows.Forms assembly.</p>
<pre class="csharp">public VIPUnitTest()
{
    Ranorex.Keyboard.AbortKey = System.Windows.Forms.Keys.Pause;
}</pre>
<div id="recordings-or-user-code-modules" class="section">
<h4><a rel="nofollow" class="toc-backref" href="#id5">Recordings or User Code Modules</a></h4>
<p>The generated class for a recording implements the <tt>ITestModule</tt> interface:</p>
<pre class="csharp">public interface ITestModule
{
    void Run();
}</pre>
<p>Per default the <tt>Run()</tt> method is private, therefore for a recording the following public function is generated:</p>
<pre class="csharp">public static void Start()
{
    TestModuleRunner.Run(Instance);
}</pre>
<p>To play a recording from Visual Studio do something like this.</p>
<pre class="csharp">[TestMethod]
public void PlayRecordingModules()
{
    try
    {
        VIPTestSuite.RecorderModules.StartSystemUnderTest.Instance.SutPath
            = SutPath;
        VIPTestSuite.RecorderModules.StartSystemUnderTest.Start();
        VIPTestSuite.RecorderModules.AddVIP.Start();
        VIPTestSuite.RecorderModules.CloseApplication.Start();
    }
    catch (Ranorex.ValidationException)
    {
        Assert.Fail();
    }
}</pre>
<p>A Ranorex User Code Module must also implement the <tt>ITestModule</tt> interface. If no <tt>Start()</tt> method is provided, the code equivalent to the one above would be:</p>
<pre class="csharp">[TestMethod]
public void PlayUserCodeModules()
{
    VIPTestSuite.RecorderModules.StartSystemUnderTest.Instance.SutPath
        = SutPath;
    Ranorex.Core.Testing.TestModuleRunner.Run(
        VIPTestSuite.RecorderModules.StartSystemUnderTest.Instance);
    Ranorex.Core.Testing.TestModuleRunner.Run(
        VIPTestSuite.RecorderModules.AddVIP.Instance);
    Ranorex.Core.Testing.TestModuleRunner.Run(
        VIPTestSuite.RecorderModules.CloseApplication.Instance);
}</pre>
<p>If the Ranorex Test Module test fails an exception will be thrown. If you don&#8217;t catch the exception, Visual Studio or MSTest will do so for you.</p>
</div>
<div id="ranorex-test-suite" class="section">
<h4><a rel="nofollow" class="toc-backref" href="#id6">Ranorex Test Suite</a></h4>
<p>There is no .NET API to access the test cases of a test suite. But one can access them using the <a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/support/user-guide-20/lesson-4-ranorex-test-suite.html#c3022">command line parameters</a> of the produced executable assembly. Test cases of a test suite are stored in the rxtst file, which is a separate XML file that needs to be deployed with the assembly.</p>
<p><a rel="nofollow" class="reference external" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms182489(v=VS.100).aspx">MSTest</a> per default copies test assemblies, but no additional files. This<a rel="nofollow" class="reference external" target="_blank" href="http://msdn.microsoft.com/en-us/library/ee256991.aspx"> article from MSDN</a> explains how to deploy additional files with MSTest. In short: Double Click on <tt>Local.testsettings</tt> and go to <tt>deployment</tt>.</p>
<blockquote><p>Another alternative could be to provide a full path to the rxtst file:</p>
<pre class="csharp">Ranorex.Core.Testing.TestSuiteRunner.Run(
    typeof(VIPTestSuite.VIPTestSuiteRepository),
    @"/testsuite:C:&#92;tests&#92;VipTestSuite.rxtst");</pre>
<p>But when deploying to different machines one has to care for an absolute path that is valid on all of them.</p></blockquote>
<p>The <strong>alternative to deploying the rxtst file</strong> separately I use here is to integrate it as text resource into the VS test assembly. This way there is no need to separately deploy the rxtst file.</p>
<ol class="arabic">
<li>
<p class="first">Right-click on the project and select properties from the context menu</p>
</li>
<li>
<p class="first">In the resources tab click on the blue line in the center to create a resource file</p>
</li>
<li>
<p class="first">From the drop-down &#8220;Add Resource&#8221; choose &#8220;Add New Text File&#8221; and give it a name like <tt>VipTestSuite</tt></p>
</li>
<li>
<p class="first">Find all occurences of <tt>VipTestSuite</tt> in the project</p>
</li>
<li>
<p class="first">In the <tt>.resx</tt> change the file path to<br />
<tt><span class="pre">..&#92;..&#92;..&#92;..&#92;..&#92;Ranorex&#92;RanorexStudio</span> Projects&#92;Samples&#92;VIPTestSuite&#92;VIPTestSuite.rxtst</tt></p>
<p><strong>Note:</strong> This is the relative path into the Ranorex solution folder. The same file is used for Ranorex and Visual Studio. Take care to use the rxtst file that fits to the referenced VIPTestSuite.exe. They are linked via GUIDs.</li>
<li>
<p class="first">In the solution explorer remove <tt>VipTestSuite.txt</tt> that was generated when adding the text resource</p>
</li>
</ol>
<p>Test methods accessing the ranorex test suite file (rxtst) would look like this:</p>
<pre class="csharp">[TestMethod]
public void Test_AddAndDeleteSingleVIP()
{
    int res = Ranorex.Core.Testing.TestSuiteRunner.Run(
        typeof(VIPTestSuite.VIPTestSuiteRepository),
        "/testcase:AddAndDeleteSingleVIP  /param:&#92;"StartPath="
        +SutPath+"&#92;"", Resources.VipTestSuite);
    Assert.AreEqual(res,0);//-1 is return on failure
}</pre>
<p><strong>Note:</strong> <tt>Resources.VipTestSuite</tt> is provided as an additional parameter</p>
<div class="important">
<p><strong>Important:</strong></p>
<p class="last">The first parameter of <tt>Ranorex.Core.Testing.TestSuiteRunner.Run</tt> is a type of the referenced Ranorex assembly (VipTestSuite.exe in our case).</p>
</div>
<p>This <strong>conversion</strong> can be automated with a script. I have added this as a custom build step in the sample project. Remove it if you don&#8217;t have Python installed.</p>
<pre class="python">import sys

def rxtst_to_cs(rxtst_file,cs_file):
    """collects all root testcases and
    creates a C# file with a partial class
    containing the corresponding test methods"""
    from xml.etree.ElementTree import ElementTree
    rxtst = ElementTree()
    rxtst.parse(rxtst_file);
    method_template = """

            [TestMethod]
            public void Test_{0}()
            {{
                int res = Ranorex.Core.Testing.TestSuiteRunner.Run(
                    typeof(VIPTestSuite.VIPTestSuiteRepository),
                    "/testcase:{0}  /param:&#92;&#92;"StartPath="
                    +SutPath+"&#92;&#92;"", Resources.VipTestSuite);
                Assert.AreEqual(res,0);//-1 is return on failure
            }}
    """
    methods = ""
    tests = rxtst.findall("content/testcase")
    methods += '&#92;n'.join(
        [method_template.format(t.get("name")) for t in tests])
    tests = rxtst.findall("content/folder/testcase")
    methods += '&#92;n'.join(
        [method_template.format(t.get("name")) for t in tests])
    tests = rxtst.findall("content/folder/folder/testcase")
    methods += '&#92;n'.join(
        [method_template.format(t.get("name")) for t in tests])
    code_wrapping = """

    using System;
    using System.Text;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using VIP_VS_Test.Properties;

    namespace VIP_VS_Test
    {{
        public partial class VIPUnitTest
        {{
            {0}
        }}
    }}
    """
    with open(cs_file,'w') as f:
        f.write(code_wrapping.format(methods))

if __name__ == "__main__":
    rxtst_to_cs(sys.argv[1],sys.argv[2])</pre>
<p>If you open the Microsoft Report file (<tt>trx</tt> file) you can also see the details about test failure, because the output of the Ranorex executable is recorded by the Microsoft test driver. In addition those details are also in the Ranorex <tt>rxlog</tt> file. This file can be rendered with the Internet Explorer, if you rename the extension to <tt>xml</tt>.</p>
</div>
</div>
<div id="links" class="section">
<h3><a rel="nofollow" class="toc-backref" href="#id7">Links</a></h3>
<ul class="simple">
<li>A partly overlapping blog on <a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/support/user-guide-20/visual-studio-integration.html">Visual Studio Integration</a></li>
<li><a rel="nofollow" class="reference external" target="_blank" href="http://www.ranorex.com/blog/using-nunit-for-test-execution">Using NUnit for Test Execution</a></li>
</ul>
</div>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Fcombining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing&amp;title=Combining%20Ranorex%203.0%20and%20Visual%20Studio%202010%20for%20UI%20Unit%20Testing" id="wpa2a_14"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/LYvqDO1Jbsg" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/JUU4EWfwTTQ" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/LYvqDO1Jbsg/combining-ranorex-3-0-and-visual-studio-2010-for-ui-unit-testing</feedburner:origLink></item>
      <item>
         <title>Automation of Java AWT/Swing Applications with the Java Plug-In</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/TlemNQ5jDqg/automation-of-java-awtswing-applications</link>
         <description>To make automation available for Java AWT/Swing applications and applets in Ranorex, there is a new and currently experimental Java Plug-In available for download. Set up Java Plug-In Java Plug-In Example Project Ranorex 3.1 comes with an instrumentation wizard which will setup the needed files and configurations for you. Please see the Java instrumentation wizard [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1365</guid>
         <pubDate>Thu, 20 Jan 2011 16:07:27 +0000</pubDate>
         <content:encoded><![CDATA[<p style="text-align:center;"><img class="size-medium wp-image-1369  aligncenter" src="http://www.ranorex.com/blog/wp-content/uploads/2011/01/overview-546x307.jpg" alt="Ranorex Test Automation for Java AWT/Swing Application with Java Plugin" width="546" height="307"/></p>
<p>To make automation available for Java AWT/Swing applications and applets in Ranorex, there is a new and currently experimental Java Plug-In available for download.</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/automation-of-java-awtswing-applications#setup">Set up Java Plug-In</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/automation-of-java-awtswing-applications#sample">Java Plug-In Example Project</a></li>
</ul>
<p><span id="more-1365"></span></p>
<div style="margin:15px 0pt;padding:10px 20px;background-color:rgb(255, 255, 140);" class="download-form">
	  <b>Ranorex 3.1 comes with an instrumentation wizard which will setup the needed files and configurations for you.</b>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/instrumentation-wizard/java-awt-swing.html">Please see the Java instrumentation wizard documentation page</a></p>
</div>
<p><a rel="nofollow" id="setup"></a></p>
<h3>Setting up the Java Plug-In</h3>
<ol>
<li>First of all close all Ranorex Tools, download the <a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/01/Ranorex_JavaPlugin235_Preview5.zip">Ranorex 2.3.5 Java Plug-In (zip)</a> (this requires Ranorex 2.3.5 or later) or the <a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/01/JavaPlugin_Ranorex3Release_Preview7.zip">Ranorex 3.0 Java Plug-In (zip)</a> and extract it.</li>
<li>Now you have to<strong> determine the path of your active Java runtime Environment</strong> to know where to copy the necessary files to. Open the Java Runtime Environment Settings which can be found in “Java Control Panel” (<strong>Control-Panel -&gt; Java</strong>). There you can see the path of your Java Runtime Environment. If you have more than one Java Runtime Environment installed on your machine, check which one will be used to execute your Java applications by determining which one is activated. If you are using Windows XP SP2, please install <a rel="nofollow" target="_blank" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyId=17D997D2-5034-4BBB-B74D-AD8430A1F7C8">Windows Update KB884020.</a></li>
<li>After identifying the path you have to copy each of the following files to its corresponding directory based on the root folder of your java runtime installation (e.g. &#8220;C:&#92;Program Files (x86)&#92;Java&#92;jre6&#92;&#8221;):
<ul>
<li><strong>“accessibility.properties” to &#92;lib</strong></li>
<li><strong>“RanorexAutomation.jar” to &#92;lib&#92;ext</strong></li>
<li><strong>“JavaHelper32/64.dll” to &#92;bin</strong></li>
</ul>
</li>
<li>After that, copy the file “<strong>Ranorex.Plugin.Java.dll</strong>” into the Ranorex Plugin directory (“C:&#92;Documents and Settings&#92;All Users&#92;Application Data&#92;Ranorex2&#92;Plugins” for Windows XP or “C:&#92;ProgramData&#92;Ranorex2&#92;Plugins” for Vista, 7 for Ranorex 2.3. For Ranorex 3.0 choose the Ranorex3 folder instead of the Ranorex2 folder).</li>
<li>Start Ranorex Spy and check if the Java Plug-In was successfully loaded. Therefore, please open the About Dialog by clicking the Ranorex Logo and check if the Java Plug-In is loaded.</li>
<p style="text-align:center;"><img class="size-full wp-image-1366  aligncenter" src="http://www.ranorex.com/blog/wp-content/uploads/2011/01/about.jpg" alt="Correctly installes Ranorex Java Plugin" width="409" height="440"/></p>
<li>Start your Java application and Spy. Now you should be able to track the controls of your application under test.</li>
</ol>
<p><a rel="nofollow" id="sample"></a></p>
<h3>Java Plug-In Example Project</h3>
<p>After assuring that the Java plug-In is working as expected it’s now time to start with a simple test project on a Java application.</p>
<p>As application under test we will take a small unit converter test application which can be found here: <a rel="nofollow" target="_blank" href="http://download.oracle.com/javase/tutorialJWS/uiswing/components/ex6/Converter.jnlp">Converter.jnlp</a>.</p>
<p>Create a new Project in Ranorex Studio and start the application under test by adding following line of code in Program.cs before your recording will be started.</p>
<pre class="csharp">System.Diagnostics.Process.Start("..&#92;&#92;..&#92;&#92;Converter.jnlp");</pre>
<p>After that copy the application to your project folder and  manually start it.</p>
<p>Start a recording on the Application and:</p>
<ul>
<li>Slide the “Metric System” slider (marked in red) down.</li>
<li>Validate the text held by the text field in the “U.S. System” area (marked in orange).</li>
<li>Validate the slider value of the “U.S. System” slider (marked in green).</li>
<li>Enter the “Metric System”, remove the given value and replace it with the value 100 (marked in yellow).</li>
<li>Change the Unit held by the combo box in “Metric System” area from Centimeters to Meters (marked in blue).</li>
<li>Validate that the text held by the text field in the “U.S. System” area equals to 3.937,01.</li>
<li>Validate that the slider value of the “U.S. System” slider equals to 3.937.</li>
</ul>
<p style="text-align:center;"><img class="size-full wp-image-1367  aligncenter" src="http://www.ranorex.com/blog/wp-content/uploads/2011/01/converter.jpg" alt="Java AWT/Swing Application Under Test with Ranorex Java plugin" width="296" height="203"/></p>
<p>After recording close the application under test, compile your project and start you compiled project.<br />
Ranorex should be able to automate and validate this Java Swing Application and the generated Ranorex Test Report should look something like this:</p>
<p style="text-align:center;"><img class="size-medium wp-image-1370  aligncenter" src="http://www.ranorex.com/blog/wp-content/uploads/2011/01/report-546x264.jpg" alt="Ranorex Test Report for Java AWT/Swing Test Automation" width="546" height="264"/></p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2011/01/JavaPluginExample.zip">Download the Java Plug-In Example Solution (JavaPluginExample.zip)</a></p>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Fautomation-of-java-awtswing-applications&amp;title=Automation%20of%20Java%20AWT%2FSwing%20Applications%20with%20the%20Java%20Plug-In" id="wpa2a_16"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/O67adozMCsk" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/TlemNQ5jDqg" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/O67adozMCsk/automation-of-java-awtswing-applications</feedburner:origLink></item>
      <item>
         <title>Enabling automation for custom QT widgets by adding Accessibility</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/POAxI0owFF8/enabling-automation-for-custom-qt-widgets-by-adding-accessibility</link>
         <description>To make automation available for QT applications, an accessibility interface is provided by QT, which is based on different technologies for each platform QT is available on. In our case MSAA (Microsoft Active Accessibility) is used when working on a Microsoft Windows platform. QT implements accessibility for most of its built-in widgets, but if you [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1283</guid>
         <pubDate>Thu, 09 Dec 2010 12:31:02 +0000</pubDate>
         <content:encoded><![CDATA[<p style="text-align:center;"><img class="aligncenter size-medium wp-image-1294" src="http://www.ranorex.com/blog/wp-content/uploads/2010/12/image1-546x325.jpg" alt="Make automation available for QT applications" width="546" height="325"/></p>
<p>To make automation available for QT applications, an accessibility interface is provided by QT, which is based on different technologies for each platform QT is available on. In our case MSAA (Microsoft Active Accessibility) is used when working on a Microsoft Windows platform.</p>
<p>QT implements accessibility for most of its built-in widgets, but if you want to add this feature to your own widgets, you have to implement it yourself.</p>
<p>To illustrate the steps that have to be implemented to make a custom widget ready for automation, we want to extend an example widget which shows an analog clock. To provide accessibility for our clock widget, we need to implement an accessible interface for it and send accessible events from the widget when the time changes.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2010/12/analogclock.zip">The sample project can be found at &#8220;AnalogClock.zip</a>&#8220; (contains a Microsoft Visual Studio project).</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/enabling-automation-for-custom-qt-widgets-by-adding-accessibility#architecture">QT Accessibility Architecture</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/enabling-automation-for-custom-qt-widgets-by-adding-accessibility#implementing">Implementing Accessibility</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/enabling-automation-for-custom-qt-widgets-by-adding-accessibility#connecting">Connecting Accessibility to our Custom Widget</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/enabling-automation-for-custom-qt-widgets-by-adding-accessibility#trying">Let’s spy it out</a></li>
</ul>
<p><span id="more-1283"></span><br />
<a rel="nofollow" id="architecture"></a></p>
<h3>QT Accessibility Architecture</h3>
<p>The whole structure of the user interface you want to make accessible (&#8220;automatable&#8221;) is represented by a tree of accessible objects. All of these objects are derived from the class QAccesibleInterface which provides a wide range of predefined information (role, action and relation) that can be defined for these objects. (See  <a rel="nofollow" target="_blank" href="http://doc.trolltech.com/4.7/qaccessible.html">QAccessible Class Reference</a>)</p>
<p>So in our example the sub-tree architecture should look something like this:</p>
<p style="text-align:center;"><img class="aligncenter size-medium wp-image-1295" src="http://www.ranorex.com/blog/wp-content/uploads/2010/12/image2-546x258.jpg" alt="Tree structure and the relationship between the tree items" width="546" height="258"/></p>
<p>Let’s have a look at this tree structure and the relationship between those tree items. We have the clock itself which is mapped as &#8220;clock&#8221;. And as child elements of the clock we have both the minute hand and the hour hand mapped as &#8220;slider&#8221;.</p>
<p>As you can see above, our clock consists of three accessible objects: the clock itself, as well as the hour and minute hands. We use an enum ClockElements to identify them. The code for this enumeration is shown later when we start to implement our accessibility interface for the clock widget.</p>
<p><a rel="nofollow" id="implementing"></a></p>
<h3>Implementing Accessibility</h3>
<p>To provide accessibility for our clock widget, we need to implement an accessible interface for it and send accessible events from the widget when the time changes. We will first take a look at the implementation of the interface.</p>
<p>Let’s start with the header file:</p>
<pre class="cpp">class AccessibleClock : public QAccessibleWidget
{
public:

	enum ClockElements {
		ClockSelf = 0,
		HourHand,
		MinuteHand
	};

	AccessibleClock(QWidget *widget, Role role = Client,
		const QString &amp; name = QString());

	int childCount() const;
	QRect rect(int child) const;
	QString text(Text text, int child) const;
	Role role(int child) const;

private:
	AnalogClock *clock() const
	{ return qobject_cast(widget()); }

};</pre>
<p>We extend the QAccessibleWidget class which inherits from QAccessibleInterface and helps us handling relationships and keeps track of events, roles, texts and bounding rectangles. Accessible interfaces for all subclasses of QWidget should use QAccessibleWidget as their base class.</p>
<p>Custom interfaces must implement states and give appropriate strings for the Text enum. This is implemented by the text and state functions. Our clock consists of three accessible objects: the clock itself, as well as the hour and minute hands. As described above we use the enum ClockElements to identify them. We also have to define the number of children held by our clock. That can be done with the function childCount. To define the bounding rects of our accessibility objects the function rect is used.</p>
<p>So let’s have a look at the implementation of all of those functions mentioned above, starting with the function which returns the number children our clock element has:</p>
<pre class="cpp">int AccessibleClock::childCount() const
{
	return 2;
}</pre>
<p>We return &#8220;2&#8243;, one for the hour hand and one for the minute hand.</p>
<p>The next function provides the bounding rectangles of our widget:</p>
<pre class="cpp">QRect AccessibleClock::rect(int child) const
{
	QRect rect;
	QPoint topLeft = clock()-&gt;mapToGlobal(QPoint(0,0));
	switch (child) {
		  case ClockSelf:
			  rect = clock()-&gt;rect();
			  break;
		  case HourHand:
			  rect = clock()-&gt;hourHandRect();
			  break;
		  case MinuteHand:
			  rect = clock()-&gt;minuteHandRect();
			  break;
		  default:
			  return QAccessibleWidget::rect(child);
	}
	return QRect(topLeft.x() + rect.x(), topLeft.y()
		+ rect.y(), rect.width(), rect.height());
}</pre>
<p>As you can see, the child enumeration (or index) is an argument of  the rect() function, so we have to decide which rectangle to return. The rects of the clock and their hands are provided by our analog clock implementation. We only have to calculate the screen coordinates of our rectangles before returning them.</p>
<p>After that we want to define role and text of our analog clock and its child objects:</p>
<pre class="cpp">QAccessible::Role AccessibleClock::role(int child) const
{
	switch (child) {
		case ClockSelf:
			return Clock;
		case HourHand:
		case MinuteHand:
			return Slider;
		default:
			;
	}
	return QAccessibleWidget::role(child);
}</pre>
<p>We have decided to use the role clock for our analog clock and the role slider for the clocks hands. You can find the specific roles at <a rel="nofollow" target="_blank" href="http://doc.trolltech.com/4.7/qaccessible.html#Role-enum">QAccessible::Role</a>.</p>
<p>Now we have to define the values for description, name and value for each of our accessibility objects:</p>
<pre class="cpp">QString AccessibleClock::text(Text text, int child) const
{
	if (!widget()-&gt;isVisible())
		return QString();

	switch (text) {
		case Description:
			switch (child)
			{
				case ClockSelf:
					return "an Analog Clock";
				case HourHand:
					return "a Hour Hand";
				case MinuteHand:
					return "a Minute Hand";
			}
		case Name:
			switch (child)
			{
				case ClockSelf:
					return "Analog Clock";
				case HourHand:
					return "Hour Hand";
				case MinuteHand:
					return "Minute Hand";
			}
		case Value:
			switch (child)
			{
				case ClockSelf:
					return clock()-&gt;currentTime.toString();
				case HourHand:
					return QString("%1").arg(clock()-&gt;currentTime.hour());
				case MinuteHand:
					return QString("%1").arg(clock()-&gt;currentTime.minute());
			}

		default:
			return QString();
	}
	return QString();
}</pre>
<p>After implementing an accessibility interface for our analog clock, we have to somehow inform the accessibility object about changes of state (in our case, when time passes). Therefore we have to hook in the timeout function of our analog clock which is connected to a timer which fires every minute. Here we have to call updateAccesibility to inform our accessibility objects about the new values:</p>
<pre class="cpp">void AnalogClock::timeout()
{
	currentTime = QTime::currentTime();
	QAccessible::updateAccessibility(this, 0, QAccessible::ValueChanged);
	update();
}</pre>
<p><a rel="nofollow" id="connecting"></a></p>
<h3>Connecting Accessibility to our Custom Widget</h3>
<p>At this point we have implemented our accessibility interface and we update our state whenever the minute or hour hands move. The next step is to connect the accessibility implementation with the widget itself. This can be done by either implementing an accessibility plug-in or by implementing an interface factory. A plug-in is a class stored in a shared library that can be loaded at run-time.  In our example, we choose to implement the interface factory. An explanation of how to implement the plug-in can be found at <a rel="nofollow" target="_blank" href="http://doc.qt.nokia.com/4.7/accessible.html">Accessibility in Qt</a>.</p>
<p>To implement the factory we extend our main.cpp for the factory implementation and in the main function we are installing this factory:</p>
<pre class="cpp">QAccessibleInterface *clockFactory(const QString &amp;classname, QObject *object)
{
	QAccessibleInterface *interface = 0;

	if (classname == "AnalogClock" &amp;&amp; object &amp;&amp; object-&gt;isWidgetType())
		interface = new AccessibleClock(static_cast(object));
	return interface;
}

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QAccessible::installFactory(clockFactory);
	AnalogClock analogClock;
	analogClock.show();
	return a.exec();
}</pre>
<p>Our factory is a function pointer for a function that takes two parameters, a QString and a QObject. We check whether the widget an accessible interface is requested for is actually an AnalogClock. If it is, we create and return our custom interface for it.</p>
<p><a rel="nofollow" id="trying"></a></p>
<h3>Let’s spy it out</h3>
<p>Now we have done everything needed to make our clock accessible. Let’s give it a try. Just compile your project and use Ranorex Spy on the application. You will see that our clock now will have a name, description, role and of course a value. The same applies to the two hands.</p>
<p style="text-align:center;"><img class="aligncenter size-medium wp-image-1296" src="http://www.ranorex.com/blog/wp-content/uploads/2010/12/image3-546x328.jpg" alt="Custom QT widgets with Ranorex Spy" width="546" height="328"/></p>
<p>As you can see from our example, your custom QT widgets will no longer be an unautomatable black blox if you spend some time implementing basic accessibility. For more information on QT Accessibility, visit <a rel="nofollow" target="_blank" href="http://doc.qt.nokia.com/4.7/accessible.html">Accessibility in Qt</a>.</p>
<p><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/wp-content/uploads/2010/12/analogclock.zip">Download the Sample Project &#8220;AnalogClock.zip</a>&#8220; (contains a Microsoft Visual Studio project).</p>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Fenabling-automation-for-custom-qt-widgets-by-adding-accessibility&amp;title=Enabling%20automation%20for%20custom%20QT%20widgets%20by%20adding%20Accessibility" id="wpa2a_18"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/ieRE_ZpVZZY" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/POAxI0owFF8" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/ieRE_ZpVZZY/enabling-automation-for-custom-qt-widgets-by-adding-accessibility</feedburner:origLink></item>
      <item>
         <title>RanoreXPath – Tips and Tricks</title>
         <link>http://feedproxy.google.com/~r/ranorex/~3/gR1CY6phx3w/ranorexpath-tips-and-tricks</link>
         <description>As you might know, the RanoreXPath expression is a powerful identifier of UI elements for desktop and web applications. In this example we would like to show you some RanoreXPath tips and tricks for your everyday life. As application under test we choose the “Ranorex Flex Example Page” which can be found under FlexExamplePage. Element [...]</description>
         <guid isPermaLink="false">http://www.ranorex.com/blog/?p=1139</guid>
         <pubDate>Mon, 11 Oct 2010 07:52:16 +0000</pubDate>
         <content:encoded><![CDATA[<p>As you might know, the RanoreXPath expression is a powerful identifier of UI elements for desktop and web applications. In this example we would like to show you some RanoreXPath tips and tricks for your everyday life. As application under test we choose the “Ranorex Flex Example Page” which can be found under <a rel="nofollow" target="_blank" href="http://www.ranorex.com/web-testing-examples/flex/FlexExample.html">FlexExamplePage</a>.</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#Element_Browser">Element Browser</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#General_Layout">General Layout of RanoreXPath</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#Modify">Search for multiple button elements</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#Modify_Equalities">Identify a checkbox by its &#8220;checked&#8221; state</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#Modify_Equality_Combinations">Identify checkboxes by combining attributes</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#Modify_Parent_Attributes">Recognize related elements by using parent-operator</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#Modify_Sibling">Recognize elements by using preceding- and following-sibling</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#Modify_RegExp">Identify e-mail address fields using regular expressions</a></li>
<li><a rel="nofollow" target="_blank" href="http://www.ranorex.com/blog/ranorexpath-tips-and-tricks#User_Code">Use RanoreXPath in user code items</a></li>
</ul>
<p><span id="more-1139"></span><br />
<a rel="nofollow" id="Element_Browser"></a></p>
<h3>Element Browser</h3>
<p>Let’s have a look at the Element Browser to get a summary of RanoreXPath&#8217;s functionality before we get to the test automation code. Just start with browsing through the Element Browser identifying our AUT (application under test) and making the FlexObject located on the webpage our new root node (via context menu -&gt; Set Element as Root):</p>
<p><img class="alignnone size-full wp-image-1148" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/1.jpg" alt="Ranorex Element Browser" width="436" height="529"/></p>
<p>Only the FlexObject and its underlying elements are now visible and all other elements are filtered out.</p>
<p><a rel="nofollow" id="General_Layout"></a></p>
<h3>General Layout of RanoreXPath</h3>
<p>So let’s take a closer look at the RanoreXPaths in our AUT. The absolute RanoreXPath of our FlexObject should look something like this:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1161" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/p1.jpg" alt="RanoreXPath" width="355" height="18"/></p>
<p>where dom, body and flexobject are adapters which specify the type or classification of the UI element followed by their attribute value comparison to identify the requested element. Basically a path consists of the following elements:</p>
<p style="text-align:center;"><img class="size-full wp-image-1171  aligncenter" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/p0.jpg" alt="General Layout of RanoreXPath" width="213" height="17"/></p>
<p>whereas the comparison operator can be more complex than a simple equality.</p>
<p><a rel="nofollow" id="Modify"></a></p>
<h3>Search for multiple button elements</h3>
<p>Assuming we want to show all of the buttons which are direct children of our earlier defined root node, just type</p>
<p><img class="aligncenter size-full wp-image-1162" title="p2" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/p2.jpg" alt="p2" width="52" height="15"/></p>
<p>into the RanoreXPath edit field. What we have done is creating a relative path to all child nodes of our actual node which are buttons.</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1149" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/2.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="204" height="66"/></p>
<p>But what if we want to show all buttons contained in our flex object?</p>
<p>The solution is as follows:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1163" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/p3.jpg" alt="RanoreXPath" width="60" height="16"/></p>
<p>What we now have done is creating a relative path to all descendant nodes of our actual nodes which are buttons, thus all buttons in all levels of the sub tree of the current element.</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1150" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/3.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="263" height="544"/></p>
<p><a rel="nofollow" id="Modify_Equalities"></a></p>
<h3>Identify a checkbox by its &#8220;checked&#8221; state</h3>
<p>Another thing we can do is creating a path to a “checkbox “. To accomplish that we have to enable the checked attribute of a checkbox item in our AUT, so check “milk” (and uncheck the &#8220;send me coupons item&#8221;) in the Checkbox Control Example area. Now we have to validate which item of the checkbox control has its attribute &#8220;checked&#8221; set to true:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1164" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/p4.jpg" alt="RanoreXPath" width="413" height="17"/></p>
<p>The only element now visible in our Element Browser should be the &#8220;milk&#8221; checkbox element:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1151" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/4.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="255" height="64"/></p>
<p><a rel="nofollow" id="Modify_Equality_Combinations"></a></p>
<h3>Identify checkboxes by combining attributes</h3>
<p>You can extend this example to e.g. not search for &#8220;eggs&#8221; but to find all other checked checkboxes in the container using the equality operator:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1165" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/p5.jpg" alt="RanoreXPath" width="510" height="16"/><br />
<img class="aligncenter size-full wp-image-1152" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/5.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="254" height="83"/></p>
<p>or  only search for &#8220;milk&#8221; and &#8220;eggs&#8221; using the “or” instead of the “and” operator:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1166" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/p6.jpg" alt="RanoreXPath" width="467" height="16"/><br />
<img class="aligncenter size-full wp-image-1153" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/6.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="255" height="79"/></p>
<p><a rel="nofollow" id="Modify_Parent_Attributes"></a></p>
<h3>Recognize related elements by using parent-operator</h3>
<p>Now let’s see if we can get the telephone number of Maurice Smith:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1224" src="http://www.ranorex.com/blog/wp-content/uploads/2010/10/p10.jpg" alt="RanoreXPath" width="200" height="16"/><br />
<img class="aligncenter size-full wp-image-1223" src="http://www.ranorex.com/blog/wp-content/uploads/2010/10/10.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="206" height="81"/></p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1222" src="http://www.ranorex.com/blog/wp-content/uploads/2010/10/101.jpg" alt="Parent operator example (RanoreXPath)" width="405" height="256"/></p>
<p>So the characters “..” reference the parent of the current result element. In our example that is the parent of the cell holding the text &#8220;Maurice Smith&#8221; (framed red), which is the 3rd row (framed blue). As we know that the second column of our table stores the telephone numbers, we can retrieve the desired cell by using its index &#8220;[2]&#8221; (framed green).</p>
<p><a rel="nofollow" id="Modify_Sibling"></a></p>
<h3>Recognize related elements by using preceding- and following-sibling</h3>
<p>What if we have a telephone number and want to get the corresponding name and e-mail address? Therefore, we need to get the preceding cell:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1248" src="http://www.ranorex.com/blog/wp-content/uploads/2010/10/p11.jpg" alt="RanoreXPath" width="568" height="14"/><br />
<img class="aligncenter size-full wp-image-1246" src="http://www.ranorex.com/blog/wp-content/uploads/2010/10/11.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="203" height="83"/></p>
<p>The &#8220;preceding-sibling::cell&#8221; command delivers all preceding cells. In our case the result is the name (framed blue) corresponding to the given telephone number (framed red).</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1249" src="http://www.ranorex.com/blog/wp-content/uploads/2010/10/p12.jpg" alt="RanoreXPath" width="564" height="15"/><br />
<img class="aligncenter size-full wp-image-1246" src="http://www.ranorex.com/blog/wp-content/uploads/2010/10/11.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="203" height="83"/></p>
<p>In contrast the &#8220;following-sibling::cell&#8221; command delivers all following cells. In our case that is the e-mail address (framed green) corresponding to the given telephone number (framed red).</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1247" src="http://www.ranorex.com/blog/wp-content/uploads/2010/10/12.jpg" alt="Preceding- and following-sibling operator example (RanoreXPath)" width="405" height="256"/></p>
<p><a rel="nofollow" id="Modify_RegExp"></a></p>
<h3>Identify e-mail address fields using regular expressions</h3>
<p>Additional to simple equality comparison, you can use regular expressions in attribute conditions.  Assume we want to search for all cell adapters containing an email address in their text attribute. There are several ways how a regular expression which matches an email address could look like, for example &#8220;.+q.+&#92;..+&#8221;. Now we can use this regular expression in our RanoreXPath:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1168" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/p8.jpg" alt="RanoreXPath" width="157" height="15"/><br />
<img class="aligncenter size-full wp-image-1155" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/8.jpg" alt="Ranorex Element Browser (RanoreXPath)" width="205" height="178"/></p>
<p>The &#8220;~&#8221; operator instructs Ranorex to perform comparison using regular expressions.  The “.” in our expression matches to every single character and the “+” defines that the character on its left should match one or more times. To escape special characters (like &#8220;.&#8221;), you need to precede the character with a backslash “&#92;”. In our example every expression will match that contains the character “@” with one or more characters before and after it, followed by a “.” which in turn is followed by one or more characters. Have a look at <a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/ranorexpath.html#c2463">RanoreXPath with regular expression</a> for more examples of using regular expressions in RanoreXPath.</p>
<p><a rel="nofollow" id="User_Code"></a></p>
<h3>Use RanoreXPath in user code items</h3>
<p>Now as we all know how powerful RanoreXPath is, let’s start applying our knowledge to a Ranorex project. First of all add our newly defined root &#8211; the flex object &#8211; to the repository of the project via drag and drop and rename it to “flex_object”. After that add a new user code item – let’s call it &#8220;moveToButtons&#8221; &#8211; to the recording and switch to code. Add following code to the just created method:</p>
<pre class="csharp">foreach(Ranorex.Button my_button in repo.flex_object.Find("./button"))
{
    my_button.MoveTo();
    Delay.Milliseconds(300);
}</pre>
<p>Then build and run your project. As expected, the mouse cursor moves to all buttons which are direct child nodes of our root. In order to move to all visible buttons in the flex object, not only to direct child nodes, alter your code as follows:</p>
<pre class="csharp">foreach(Ranorex.Button my_button in repo.flex_object.Find(".//button[@visible=’True’]"))
{
    my_button.MoveTo();
    Delay.Milliseconds(300);
}</pre>
<p>In our user code example we’ve only used relative paths till now, but of course it’s possible to use absolute paths, too. So let’s try  to find out the e-mail address of Maurice Smith via an absolute path. The following code searches for Maurice&#8217; email address (using the regular expression from our previous example) and writes the email address to the Ranorex Test Report:</p>
<pre class="csharp">Ranorex.Cell cell = "/dom[@page='FlexExample.html']/body/flexobject/container[@caption='DataGrid Control']/table/row/cell[@text='Maurice Smith']/../cell[@text~'.+@.+&#92;..+']";
Report.Info("Info: ", cell.Text.ToString());</pre>
<p>After building and executing the test, you should see the expected email address in your Ranorex Test Report.</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-1180" src="http://www.ranorex.com/blog/wp-content/uploads/2010/09/91.jpg" alt="Ranorex Test Report (RanoreXPath)" width="456" height="163"/></p>
<p>So as you can see the RanoreXPath is very powerful at searching UI elements in your AUT without the use of programming skills. You can find every single UI element just by having knowledge about RanoreXPath modification and regular expressions. If you use the Ranorex Repository and the Ranorex Recorder you don&#8217;t even have to modify any code . For an overview of all relevant modifications of RanoreXPath visit the <a rel="nofollow" target="_blank" href="http://www.ranorex.com/support/user-guide-20/ranorexpath.html">RanoreXPath User Guide</a>.</p>
<p><a rel="nofollow" class="a2a_dd a2a_target addtoany_share_save" target="_blank" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.ranorex.com%2Fblog%2Franorexpath-tips-and-tricks&amp;title=RanoreXPath%20%E2%80%93%20Tips%20and%20Tricks" id="wpa2a_20"><img src="http://www.ranorex.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/ranorex-blog/~4/CHV7PDiwNqM" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/ranorex/~4/gR1CY6phx3w" height="1" width="1"/>]]></content:encoded>
         <category>Test Automation</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/ranorex-blog/~3/CHV7PDiwNqM/ranorexpath-tips-and-tricks</feedburner:origLink></item>
   </channel>
</rss><!-- fe4.yql.bf1.yahoo.com compressed/chunked Sat May 26 03:29:20 UTC 2012 -->

