libcvautomation/wrapper_functions.html

259 lines
19 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>libcvautomation: Appendix of Wrapper Functions and Environment Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script><script src="http://www.mathjax.org/mathjax/MathJax.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">libcvautomation
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Appendix of Wrapper Functions and Environment Variables </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="appendix_variables"></a>
Environment Variables</h2>
<h3><a class="anchor" id="appendix_search"></a>
Search Method</h3>
<div class="fragment"><pre class="fragment"> SEARCH_METHOD
</pre></div><p> This controls how each of the functions searches for an image. See <a class="el" href="libcvautomation_search_methods.html">Libcv Search Methods</a> for more instruction on how to use this option.</p>
<h3><a class="anchor" id="appendix_tolerance"></a>
Tolerance</h3>
<div class="fragment"><pre class="fragment"> TOLERANCE
USE_SANE_TOLERANCE
</pre></div><p> These control how tolerant each function is when searching for an image. Acceptable values are anywhere between <code>INT_MIN</code> to <code>INT_MAX</code>. See <a class="el" href="libcvautomation_search_methods.html">Libcv Search Methods</a> for more information on how the tolerance values work. Additionally, the cva-input and cva-match programs (which this wrapper depends on) implement a "sane-tolerance" option. This allows you to set a tolerance between 1 - 100, where: \( 1 \approx 0 \), and \( 100 \approx INT\_MAX \) By default, functions will not use sane tolerance. To make the functions search using sane tolerance, set </p>
<div class="fragment"><pre class="fragment"> USE_SANE_TOLERANCE=<span class="stringliteral">&quot;yes&quot;</span>
</pre></div><h3><a class="anchor" id="appendix_center"></a>
Center</h3>
<div class="fragment"><pre class="fragment"> USE_CENTER
</pre></div><p> This controls whether each function will return a value based on the center of the sub-image, rather than the top-left corner. By default, functions will use center-based matching. To make the functions use the top-left corner, set </p>
<div class="fragment"><pre class="fragment"> USE_CENTER=<span class="stringliteral">&quot;&quot;</span>
</pre></div><h3><a class="anchor" id="appendix_wait"></a>
Wait</h3>
<div class="fragment"><pre class="fragment"> USE_WAIT
TIMEOUT
</pre></div><p> These control how the "waitfor" function is used. By default, all image-matching functions will wait for an image to appear, and then click on it. This way, it won't click randomly if it can or can't find an image, and provides very easy error recognition. The functions will wait for a period of <code>TIMEOUT</code> seconds before complaining. To disable waiting before performing an action, set </p>
<div class="fragment"><pre class="fragment"> USE_WAIT=<span class="stringliteral">&quot;&quot;</span>
</pre></div> <dl class="warning"><dt><b>Warning:</b></dt><dd>Without setting a tolerance value, the waitfor function becomes totally useless, as the first search will always find an image. <code>Make sure to set the tolerance</code> (or just leave it as the default value in the wrapper).</dd></dl>
<h3><a class="anchor" id="appendix_output"></a>
Output and Debugging</h3>
<div class="fragment"><pre class="fragment"> OUTFILE
ERRFILE
</pre></div><p> These files control the reporting of <a class="el" href="namespacelibcvautomation__funcs.html" title="Namespace to contain all of the features needed to use the libcvautomation_funcs wrapper.">libcvautomation_funcs</a>. The wrapper generates a decent amount of output to help in debugging application tests, and by default these get redirected to /dev/null. To instead redirect them to a file, you can do something like this: </p>
<div class="fragment"><pre class="fragment"> OUTFILE=`mktemp`; echo <span class="stringliteral">&quot;Logfile: &quot;</span> $OUTFILE
ERRFILE=`mktemp`; echo <span class="stringliteral">&quot;Error file: &quot;</span> $ERR_FILE
</pre></div><p> This will redirect the output and error output to a file you own, and inform you of what that file is.</p>
<h2><a class="anchor" id="appendix_functions"></a>
Functions</h2>
<h3><a class="anchor" id="appendix_click"></a>
Click the mouse</h3>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a44d208a38c591e8b9eb5aff0051f4414" title="Press a mouse button down.">mouse_down</a> [mouse-button]
</pre></div><p> Push the mouse button down where it is currently located, and leave it down. Optionally specify a mouse button to push down <br/>
<br/>
</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a4046c72b33ac57e1d39431c9cc888d44" title="Release a mouse button.">mouse_up</a> [mouse-button]
</pre></div><p> Release a mouse button. Optionally specify a mouse button to release (default button 1). <br/>
<br/>
</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#af4d9b2f324c23336b83399f7fd71852e" title="Press and release a mouse button.">mouse_click</a> [mouse-button]
</pre></div><p> Release the mouse button Optionally specify a mouse button to release <br/>
<br/>
</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#ab98166fb3931d7cd7fbbad6a0986d46b" title="Click a mouse button at an absolute location.">mouse_click_xy</a> &lt;x-coordinate&gt; &lt;y-coordinate&gt; [mouse-button]
</pre></div><p> Click the mouse on an absolute point on screen Optionally specify a mouse button to click </p>
<dl class="note"><dt><b>Note:</b></dt><dd>The actual process is to move the mouse to the given location, then click there. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a633ee669989a44fa6f23fdbd9881a39e" title="Click a mouse button at a relative location.">mouse_click_rxy</a> &lt;x-increment&gt; &lt;y-increment&gt; [mouse-button]
</pre></div><p> Click the mouse on the screen relative to where the mouse is at Optionally specify a mouse button to click </p>
<dl class="note"><dt><b>Note:</b></dt><dd>The actual process is to move the mouse the given distance, then click there. </dd>
<dd>
Also, note that a positive <code>x-increment</code> moves the mouse to the right, and a positive <code>y-increment</code> moves the mouse down. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> mouse_click_image &lt;filename&gt; [filename-2] ... [filename-n]
</pre></div><p> Click the mouse on a screenshot from <code>filename</code> Optionally specify multiple files to search in. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This is affected by the <code>CENTER</code>, <code>TOLERANCE</code>, and <code>SEARCH_METHOD</code> variables. See <a class="el" href="wrapper_functions.html#appendix_variables">Environment Variables</a> for more information on these. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a65604797ddffcbbfc2efcb470a54a353" title="Press and release a mouse button twice.">mouse_doubleclick</a> [mouse-button]
</pre></div><p> Click the mouse twice Optionally specify a mouse button to click <br/>
<br/>
</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#aa15713c985a8799f4866bd13acfa2e17" title="Click a mouse button twice at an absolute location.">mouse_doubleclick_xy</a> [mouse-button]
</pre></div><p> Click the mouse twice on an absolute point on screen Optionally specify a mouse button to click </p>
<dl class="note"><dt><b>Note:</b></dt><dd>The actual process is to move the mouse to the given location, then click there. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#abca5903b1e4208d1c019272f2e05ebdc" title="Click a mouse button twice at a relative location.">mouse_doubleclick_rxy</a> [mouse-button]
</pre></div><p> Click the mouse twice on a relative point on screen Optionally specify a mouse button to click <br/>
<br/>
</p>
<div class="fragment"><pre class="fragment"> mouse_doubleclick_image &lt;filename&gt; [filename-2] ... [filename-n]
</pre></div><p> Click the mouse twice on a screenshot from <code>filename</code> Optionally specify multiple files to search in. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This is affected by the <code>CENTER</code>, <code>TOLERANCE</code>, and <code>SEARCH_METHOD</code> variables. See <a class="el" href="wrapper_functions.html#appendix_variables">Environment Variables</a> for more information on these. <br/>
<br/>
</dd></dl>
<h3><a class="anchor" id="appendix_move"></a>
Move the mouse</h3>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a6585a90832b64e0b75669d458576a98f" title="Move the mouse to a given coordinate, and leave it there.">mouse_hover_xy</a> &lt;x-coordinate&gt; &lt;y-increment&gt;
</pre></div><p> Move the mouse to a location on screen using absolute positioning <br/>
<br/>
</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a28bf60ba05cbec59985f9655d70ee583" title="Move the mouse by a given increment, and leave it there.">mouse_hover_rxy</a> &lt;x-increment&gt; &lt;y-increment&gt;
</pre></div><p> Move the mouse to a location on screen using relative positioning </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Note that a positive <code>x-increment</code> moves the mouse to the right, and a positive <code>y-increment</code> moves the mouse down. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> mouse_hover_image &lt;filename&gt; [filename-2] ... [filename-n]
</pre></div><p> Move the mouse to a location on screen based on screenshot Optionally specify multiple files to search in. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This is affected by the <code>CENTER</code>, <code>TOLERANCE</code>, and <code>SEARCH_METHOD</code> variables. See <a class="el" href="wrapper_functions.html#appendix_variables">Environment Variables</a> for more information on these. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a7c2ecbf863dcd5e4af933f38752e81e5" title="Jiggle the mouse in place.">mouse_jiggle</a>
</pre></div><p> Very simple wrapper to move the mouse 1 pixel right and 1 pixel down - useful for activating menu items. <br/>
<br/>
</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a47b44363958312c387e135e9ae484dc0" title="Scroll the mouse wheel up.">mouse_scroll_up</a>
</pre></div><p> Scroll the mouse wheel up one</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#aef8e77ffd828b6803a918cc061d0b92b" title="Scroll the mouse wheel down.">mouse_scroll_down</a>
</pre></div><p> Scroll the mouse wheel down one</p>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#af3b5f4b294fd2f429e70de18848e1ea8" title="Drag and drop one image to another.">mouse_drag_n_drop</a>
</pre></div><p> Drag one image to another - i.e. drag a file to a folder. </p>
<dl class="warning"><dt><b>Warning:</b></dt><dd>This function accepts only two arguments unlike other image functions - the first argument is the image to drag, the second is the image to drag to.</dd></dl>
<h3><a class="anchor" id="appendix_find"></a>
Find an Image</h3>
<div class="fragment"><pre class="fragment"> image_location &lt;filename&gt;
</pre></div><p> Get the location of an image on screen </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This is affected by the <code>CENTER</code>, <code>TOLERANCE</code>, and <code>SEARCH_METHOD</code> variables. See <a class="el" href="wrapper_functions.html#appendix_variables">Environment Variables</a> for more information on these. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> wait_for &lt;filename&gt;
</pre></div><p> Wait for an image to display on screen, and then return </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This is affected by the <code>TOLERANCE</code>, <code>SEARCH_METHOD</code>, and <code>TIMEOUT</code> variables. See <a class="el" href="wrapper_functions.html#appendix_variables">Environment Variables</a> for more information on these.</dd></dl>
<h3><a class="anchor" id="appendix_keyboard"></a>
Click the keyboard</h3>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a12177cc9e099247f535f9c87409d4259" title="Enter a string of text on the keyboard.">key_string</a> <span class="stringliteral">&quot;&lt;string&gt;&quot;</span>
</pre></div><p> Enter a string of characters on the keyboard rather than a single character at a time. </p>
<dl class="warning"><dt><b>Warning:</b></dt><dd>This function <b>does not</b> accept key strings like "Space" as <code>key_down</code>, <code>key_up</code>, and <code>key_click</code> do. If you pass in "Space", that is exactly what will be typed. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a75c43acfa38dea829ce26494c7d0bf3f" title="Press a key down on the keyboard, and leave it down.">key_down</a> <span class="stringliteral">&quot;&lt;key-name&gt;&quot;</span>
</pre></div><p> Press a key down and leave it down </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function accepts special keys like "Space" - see <a class="el" href="xtest_key_strings.html">XTest Key Strings</a> for a full list of characters allowed. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#ab12bbd622fcf5e9bb7ae31e86731d9a3" title="Release a key on the keyboard.">key_up</a> <span class="stringliteral">&quot;&lt;key-name&gt;&quot;</span>
</pre></div><p> Release a key </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function accepts special keys like "Space" - see <a class="el" href="xtest_key_strings.html">XTest Key Strings</a> for a full list of characters allowed. <br/>
<br/>
</dd></dl>
<div class="fragment"><pre class="fragment"> <a class="code" href="namespacelibcvautomation__funcs.html#a8f69f7246688b01ac3cfb8dd8d70c955" title="Press and release a key on the keyboard.">key_click</a> <span class="stringliteral">&quot;&lt;key-name&gt;&quot;</span>
</pre></div><p> Press a key down and then release it immediately after </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function accepts special keys like "Space" - see <a class="el" href="xtest_key_strings.html">XTest Key Strings</a> for a full list of characters allowed. <br/>
<br/>
</dd></dl>
<h3><a class="anchor" id="appendix_utilities"></a>
Useful extras</h3>
<div class="fragment"><pre class="fragment"> is_running <span class="stringliteral">&quot;&lt;process-name&gt;&quot;</span>
</pre></div> <div class="fragment"><pre class="fragment"> is_running <span class="stringliteral">&quot;&lt;process-id&gt;&quot;</span>
</pre></div><p> Check if a program name or PID is currently running</p>
<div class="fragment"><pre class="fragment"> notify <span class="stringliteral">&quot;&lt;string_to_display&gt;&quot;</span>
</pre></div><p> Display a notification to the user, and wait for a response </p>
<dl class="warning"><dt><b>Warning:</b></dt><dd>Uses <code>zenity</code> - if <code>zenity</code> isn't available, will return an error without pausing, and will not display anything. </dd></dl>
</div></div><!-- contents -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Defines</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 11 2012 17:42:49 for libcvautomation by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>