monkeyrunner使用Python编写,monkeyrunner教程

  monkeyrunner使用Python编写,monkeyrunner教程

  http://www.51testing.com/html/64/505964-834183.html

  写了两个monkeyrunner的自动化脚本,遇到了这样一个问题,monkeyrunner无法处理gbk编码的中文。(我还没找到扩展方法)之前写的脚本需要get按钮,然后点击按钮。我通过使用hierarchyviewer检查每个控件的ID来获得按钮。这里梳理一下整个流程,需要导入的东西有:fromcom.android.monkey runner导入monkey runner、monkey device from com . Android . monkey runner . easy import easymonkey device from com . Android . monkey runner . easy import By from com . Android . chimp chat . hierarc hy viewer导入hierarchy viewer from com . Android . hierarchy viewer lib . device导入view node from com . Android . monkey runner导入MonkeyView 1 .MonkeyRun和MonkeyDevice是最基本的类。2.EasyMonkeyDevice提供了一些触摸、键入、定位的方法,GetText方法。见源代码:http://source-Android . Fran droid . com/SDK/monkey runner/src/com/Android/monkey runner/easy/3。EasyMonkeyDevice.java。By提供了根据ID返回PyObject的方法,在EasyMonkeyDevice和by的配合下使用ID可以做很多事情。4.HierarchyViewer提供了根据ID,对ViewNode的一些操作等来查找viewnode的方法。5.viewnode类的对象表示一个控件。控件的所有属性,包括mid、mtext、height和width,都可以从这个类中获得。可以从viewnode的java源代码中获得很多信息。这个课我还没搞清楚。从源代码中,你也可以从这个类中获得很多信息,包括parent,text等。但是我对monkeyview对象的操作一直不成功。该方法的所有调用都提示尚未发生可访问性事件。目前还没有查出原因和解决方法。最基本的操作device=monkey runner . waitforconnection()#等待设备的连接Easy _ device=EasyOnKeyDevice(device)#获取一个EasyOnKeyDevice对象Hierarchy _ Viewer=device . Get Hierarchy Viewer()#获取一个Hierarchy Viewer对象。基本上,所有的程序都会使用这些对象来操作控件。有几种方法可以获取控件上的文本。1.按id获取:text=easy _ device.gettext (by。ID (ID/text)) 2。先获取view node:view node=hierarchy _ viewer . findviewbyid( id/text ),然后调用hierarchy viewer:text=hierarchy _ viewer . gettext(view node)3的方法。直接从view node:text=view node _ text . named properties . get( text:mtext )的属性表中获取。值其实前两个方法本质上都是把第三个方法写成自己的函数。需要声明的是,如果通过上述方法获得的文本是英文的,就不会有任何问题。如果是gbk编码的中文,在monkeyrunner就无法正常显示,会得到一些乱码。这个问题今天研究了一整天,还没解决。希望有人能提供一些帮助!如何点击按钮!有三种方式按下monkeyrunner上的按钮。1.通过MonkeyDevice的touch()方法。这是最直接也最容易出错的方法,因为按钮的像素坐标在不同的手机上可能会发生变化。通过查看帮助文档可以发现,device提供了非常方便易用的功能:拖动、按压、触摸、键入drag()模拟屏幕上的拖动操作,需要解锁或者在屏幕上下滑动时使用,比如:device.drag ((50,350),(50,100),0.1,10) args:前两个分别代表开始和结束的像素坐标。使用HierarchyViewer,可以很容易地看到每个控件的ID,然后使用以下语句按下按钮:easy _ device.touch (by。id (id),monkeydevice.down _ and _ up)。当然这种方法会让人很头疼,这种触摸对于下拉列表和弹出框经常会出错。因为下拉列表和弹出框的坐标系,你得到的按钮坐标是相对于列表和弹出框的,而不是相对于屏幕的。这种情况下,只能自己算一个坐标变换。

  将相对坐标转换为屏幕坐标。这个函数附在最后。3.根据按钮上的多行文字直接找到butto。这种用法更高级。虽然MonkeyDevice提供了一个叫getViewsByText的方法,这个方法可以根据提供的文本找到monkeyview,但是我无论如何都用不上。我忍不住自己写函数。这个功能也在最后。(因为该死的编码问题,暂时只能找到英文按钮。)中文代码monkeyrunner是Jython写的。而且Jython不支持东南亚语言。如果程序中得到的值是gbk编码的,你想直接打印出来,会提示未知编码gbk。那么如何解决这个问题呢?很自然的认为你可以解码这个值。解码成unicode。不幸的是,我们不能。我们只能对这个gbk编码的值进行utf-8编码来显示。更何况python中的编码转换其实就是str和unicode之间的转换。直接写a=中文,A的类型是str。如果你写a=u 中文,A的类型就是unicode。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: