Hi Andre,<div><br></div><div>Comments inline.<br><br><div class="gmail_quote">On Fri, Jan 6, 2012 at 3:36 PM, Andre Klapper <span dir="ltr">&lt;<a href="mailto:ak-47@gmx.net">ak-47@gmx.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi,<br>
<div class="im"><br>
On Fri, 2012-01-06 at 10:34 -0800, Nagappan Alagappan wrote:<br>
&gt; On Fedora 16, I tried like this:<br>
&gt; launchapp(&#39;gedit&#39;, lang = &#39;de_DE&#39;)<br>
&gt;<br>
&gt; it worked as expected. I haven&#39;t used setlocale. Can you please verify<br>
&gt; the above and see it works in your environment ?<br>
<br>
</div>Thanks nags, this works perfectly!<br>
<br>
Now I&#39;m trying this in Czech (open gedit in Czech and close it by going<br>
to File&gt;Quit which is Soubor&gt;Ukončit in Czech):<br>
<br>
  launchapp(&#39;gedit&#39;, lang = &#39;cs_CZ.utf8&#39;)<br>
  time.sleep (3)<br>
  selectmenuitem (&#39;*gedit&#39;, &#39;mnuSoubor;mnuUkončit&#39;) # File &gt; Quit<br></blockquote><div><br></div><div>The following issue was bug in LDTP. I have now fixed in git head and the above scenario works. </div>

<div><br></div><div>I would write the above code as:</div><div><br></div><div>launchapp(&#39;gedit&#39;, lang = &#39;cs_CZ.utf8&#39;)</div><div>waittillguiexist(&#39;*gedit&#39;)</div><div>selectmenuitem (&#39;*gedit&#39;, &#39;mnuSoubor;mnuUkončit&#39;) # File &gt; Quit</div>

<div>waittillguinotexist(&#39;*gedit&#39;)</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
This triggers the following error:<br>
<br>
Traceback (most recent call last):<br>
  File &quot;/usr/lib/python2.7/site-packages/pyatspi/registry.py&quot;, line 193, in eventWrapper<br>
    return callback(event)<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/waiters.py&quot;, line 105, in _event_cb<br>
    self.event_cb(event)<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/waiters.py&quot;, line 340, in event_cb<br>
    if self._match_name_to_acc(self._frame_name, event.source):<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/utils.py&quot;, line 463, in _match_name_to_acc<br>
    _ldtpize_accessible_name[1])<br>
UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xc5 in position 5: ordinal not in range(128)<br>
Traceback (most recent call last):<br>
  File &quot;/usr/lib/python2.7/site-packages/pyatspi/registry.py&quot;, line 193, in eventWrapper<br>
    return callback(event)<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/core.py&quot;, line 118, in _event_cb<br>
    win_name = u&#39;%s%s&#39; % (abbrev_role, abbrev_name)<br>
UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xc5 in position 5: ordinal not in range(128)<br>
Traceback (most recent call last):<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/waiters.py&quot;, line 85, in _timeout_cb<br>
    self.poll()<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/waiters.py&quot;, line 336, in poll<br>
    gui, _window_name = self._get_window_handle(self._frame_name)<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/utils.py&quot;, line 804, in _get_window_handle<br>
    if self._match_name_to_acc(window_name, gui):<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/utils.py&quot;, line 463, in _match_name_to_acc<br>
    _ldtpize_accessible_name[1])<br>
UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xc5 in position 5: ordinal not in range(128)<br>
Traceback (most recent call last):<br>
  File &quot;/usr/lib/python2.7/site-packages/pyatspi/registry.py&quot;, line 193, in eventWrapper<br>
    return callback(event)<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/waiters.py&quot;, line 105, in _event_cb<br>
    self.event_cb(event)<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/waiters.py&quot;, line 340, in event_cb<br>
    if self._match_name_to_acc(self._frame_name, event.source):<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtpd/utils.py&quot;, line 453, in _match_name_to_acc<br>
    if <a href="http://acc.name" target="_blank">acc.name</a> == name:<br>
  File &quot;/usr/lib/python2.7/site-packages/pyatspi/Accessibility.py&quot;, line 177, in &lt;lambda&gt;<br>
    <a href="http://Atspi.Accessible.name" target="_blank">Atspi.Accessible.name</a> = property(fget=lambda x: exwrap(Atspi.Accessible.get_name, x))<br>
  File &quot;/usr/lib/python2.7/site-packages/pyatspi/Accessibility.py&quot;, line 154, in exwrap<br>
    raise LookupError<br>
LookupError<br>
<br>
<br>
As I have no idea how to fix (telling Python to interpret as UTF-8 or<br>
so?) I instead tried accessing an menuitem via using an index:<br>
<br>
  launchapp(&#39;gedit&#39;, lang = &#39;de_DE.utf8&#39;)<br>
  time.sleep (3)<br>
  selectmenuitem (&#39;*gedit&#39;, &#39;mnu1;mnu1&#39;)<br></blockquote><div><br></div><div>launchapp(&#39;gedit&#39;, lang = &#39;de_DE.utf8&#39;)</div><div>waittillguiexist(&#39;*gedit&#39;) </div><div>selectmenuitem (&#39;*gedit&#39;, &#39;mnu#9&#39;) # For Quit</div>

<div><div>waittillguiexist(&#39;*gedit&#39;)</div></div><div><br></div><div>Note the hierarchy number is based on accessibility output.</div><div><br></div><div>How to get the object index:</div><div><br></div><div>getobjectproperty(&#39;window name&#39;, &#39;object name&#39;, &#39;obj_index&#39;)</div>

<div><br></div><div>example:</div><div>getobjectproperty(&#39;*gedit&#39;, &#39;mnuQuit&#39;, &#39;obj_index&#39;)</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<br>
This probably only works for objects without labels, as I get this error?:<br>
<br>
Traceback (most recent call last):<br>
  File &quot;dummie.py&quot;, line 24, in &lt;module&gt;<br>
    selectmenuitem (&#39;*gedit&#39;, &#39;mnu1;mnu1&#39;)<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtp/client.py&quot;, line 65, in __call__<br>
    return self.__send(self.__name, args)<br>
  File &quot;/usr/lib/python2.7/xmlrpclib.py&quot;, line 1575, in __request<br>
    verbose=self.__verbose<br>
  File &quot;/usr/lib/python2.7/site-packages/ldtp/client.py&quot;, line 180, in request<br>
    raise LdtpExecutionError(e.faultString.encode(&#39;utf-8&#39;))<br>
ldtp.client_exception.LdtpExecutionError: Unable to find object name &quot;mnu1&quot; in application map<br>
<br>
<br>
My problem is likely similar to<br>
<a href="http://lists.freedesktop.org/archives/ldtp-dev/2009-October/000923.html" target="_blank">http://lists.freedesktop.org/archives/ldtp-dev/2009-October/000923.html</a><br>
- I would like to start the same application in several different human<br>
languages by looping over some locales, and perform the same steps<br>
everytime, and would like to use a language-independent way to access<br>
objects (either via somehow defining that for object-related commands in<br>
the script the en_US default shall be looked up while still showing the<br>
user interface in a different language; or by using &quot;generic&quot; names for<br>
objects, like indexes, that are language-independent).<br>
<br>
Any ideas, or is this not doable currently?<br></blockquote><div><br></div><div>Above one works, but I recommend to do this way:</div><div><br></div><div>Use variable name in the script and import appropriate locale file which has same variable name mapping with respective locale string.</div>

<div><br></div><div>example:</div><div><br></div><div>gedit_cs_CZ.py will have the following entries:</div><div><br></div><div><span class="Apple-style-span" style>mnuFile = mnuSoubor</span></div><div><span class="Apple-style-span" style>mnuQuit = mnuUkončit</span></div>

<div><span class="Apple-style-span" style><br></span></div><div>gedit_de_DE.py will have similar entries as above, but with appropriate locale string as value.</div><div><br></div><div><span class="Apple-style-span" style>In actual test file:</span></div>

<div><span class="Apple-style-span" style><br></span></div><div><span class="Apple-style-span" style>import imp</span></div><div><span class="Apple-style-span" style><br></span></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif">languages = [&#39;cs_CZ&#39;, &#39;de_DE&#39;]</font></div>

<div><font class="Apple-style-span" color="#222222" face="arial, sans-serif">for lang in languages:</font></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif">   moduleName = </font><span class="Apple-style-span" style="color:rgb(34,34,34);font-family:arial,sans-serif">&#39;gedit_%s&#39; % lang</span></div>

<div><font class="Apple-style-span" color="#222222" face="arial, sans-serif">   locals()[</font><span class="Apple-style-span" style="color:rgb(34,34,34);font-family:arial,sans-serif">moduleName</span><span class="Apple-style-span" style="color:rgb(34,34,34);font-family:arial,sans-serif">] = __import__(moduleName)</span></div>

<div><font class="Apple-style-span" color="#222222" face="arial, sans-serif">   launchapp(&#39;gedit&#39;, lang = lang)</font></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif">   waittillguiexist(&#39;*gedit&#39;)</font></div>

<div><font class="Apple-style-span" color="#222222" face="arial, sans-serif">   selectmenuitem(&#39;*gedit&#39;, &#39;%s;%s&#39; % (mnuFile, mnuQuit))</font></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif"><br>

</font></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif">Hope the above code helps to start with automation.</font></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif"><br>

</font></div><div>Thanks</div><div>Nagappan</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
My long-term aim is to have some script for localized screenshot<br>
generation for e.g. release notes, by the way.<br>
<br>
Thanks,<br>
andre<br>
<div class="HOEnZb"><div class="h5">--<br>
mailto:<a href="mailto:ak-47@gmx.net">ak-47@gmx.net</a> | failed<br>
<a href="http://blogs.gnome.org/aklapper" target="_blank">http://blogs.gnome.org/aklapper</a><br>
<br>
_______________________________________________<br>
LDTP-dev mailing list<br>
<a href="mailto:LDTP-dev@lists.freedesktop.org">LDTP-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/ldtp-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/ldtp-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Linux Desktop (GUI Application) Testing Project - <a href="http://ldtp.freedesktop.org">http://ldtp.freedesktop.org</a><br><a href="http://nagappanal.blogspot.com">http://nagappanal.blogspot.com</a><br>


</div>