问题标签 [androidviewclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3645 浏览

android - 通过 eclipse/java 将 logcat 输入发送到 monkeyrunner 会导致问题

我正在开发一种工具来识别 android 应用程序中的小部件,并在单击时显示它们的属性。我创建了一个可以成功执行此操作的独立工具,但是在将独立工具转换为 Eclipse 插件时遇到了问题,这对于打包到我们的最终产品中是必需的。

该工具的操作方式是首先在模拟器上运行透明覆盖应用程序。此应用程序收集用户按下屏幕的坐标并将其写入 Android 日志。然后,在模拟器上启动要测试的应用程序。

adb logcat 作为标准输入通过管道传输到处理小部件识别的 monkeyrunner 脚本中。实时,monkeyrunner 脚本解析 logcat 输入的坐标新闻信息。monkeyrunner 脚本使用 AndroidViewClient (https://github.com/dtmilano/AndroidViewClient),这是一个可以列出屏幕上所有 View 对象及其属性的工具。使用坐标印刷信息,从视图列表中选出具有正确坐标属性的视图,并打印出其属性。

我遇到的问题源于尝试在 eclipse/java 的上下文中处理 logcat 输出到 monkeyrunner 脚本的管道。如果我在单独的并发进程中运行 adb logcat 和 monkeyrunner,并将 logcat 的 InputStream 传输到 monkeyrunner 的 OutputStream,似乎存在一些锁定问题,因为 monkeyrunner 永远不会接收坐标信息作为输入。我也尝试将流处理程序放在单独的线程中,但这没有效果。

由于并发进程有时会成为问题的根源,我想直接在monkeyrunner中从logcat中读取,因此只有一个主进程。在 monkeyrunner 中,一旦与模拟器建立连接,就可以在其上打开 adb shell (https://developer.android.com/tools/help/MonkeyDevice.html#shell)。Logcat 是一个非常常见的 adb 命令,但是当我运行 device.shell("logcat") 时,它失败了

不幸的是,我的谷歌技能无法为我找到解决这个问题的方法。

0 投票
3 回答
4495 浏览

android - ImportError:没有名为 dtmilano 的模块

嗨,我是 python 开发的新手。我正在尝试执行http://dtmilano.blogspot.in/2012/02/monkeyrunner-interacting-with-views.html给出的代码,但是当我尝试执行代码时,我得到以下错误:

我将 Eclipse 与 PyDev 和 Jython 2.5.3 一起使用。我还在 Windows 7 机器上运行的 Eclipse 上配置了 Python 32。其他 Python 脚本运行良好,但我不知道为什么 dtmilano 博客上给出的代码会导致此错误。我还安装了 AndroidViewClient 并在系统路径中设置了 ANDROID_VIEW_CLIENT_HOME。请帮忙。

0 投票
4 回答
2288 浏览

android - How to determine whether softkeyboard is shown on the screen - while using monkeyrunner

I am trying to automate few screen clicks and entries using monkeyrunner(using AndroidViewClient )

Whenever there is a edittext in the screen, the soft keyboard is popping up, and if I want to press a button though findViewById, (assuming that this particular button is behind the soft keyboard) fails. Instead of clicking this button, it clicks on some button in the soft keyboard. So as a work around I need to press back key through monkey runner, to hide the soft keyboard.

My question is how to determine whether soft keyboard is shown in the screen or not while running from monkeyrunner.

When I looked at the logcat, I see this following while showing up the soft keyboard

and displays this while softkeyboard is removed

If someone can provide an example of how to parse the adb logcat output from the monkeyrunner script, I can use that as a last option, if there is any suitable alternative solution found.

0 投票
1 回答
556 浏览

monkeyrunner - Viewclient touch() 作为长按工作,它应该作为点击工作?

我正在使用带有 androidviewclient 的 monkeyrunner 测试 android 4.0.3 的 Gallery 应用程序,当我尝试使用 AVC 的 touch() 功能单击任何专辑时,它正在选择专辑。它应该打开一个相册。我打开相册的代码是

如果我做错了什么,请告诉我?

0 投票
1 回答
2401 浏览

android - 将 Monkeyrunner 与 UI Automator 集成

是否可以将 Monkey Runner 与 UI Automator 集成。我已经在 UI Automator 项目中导入了 Monkeyrunner jar。但是当我运行时

构建失败,因为它不识别任何类。他们是在 UI Automator Java 项目中识别 Monkeyrunner 类的任何其他方法吗

提前致谢

0 投票
1 回答
698 浏览

android - 如何缩放 Android MonkeyRunner 的触摸事件坐标以支持具有相同脚本的多个设备?

我正在尝试编写一个monkeyrunner 脚本,它将为企业用户自动安装mdm 软件。该脚本将使用多个设备执行,因此具有多种屏幕尺寸和密度。

有没有办法从设备 A 获取参考坐标并对其进行缩放,以便将其应用于其他设备?我开始从参考设备获取初始触摸坐标,在本例中是三星 Galaxy S2,显示屏为 480 x 800,屏幕密度为 1.5,并在运行时根据设备计算缩放坐标。但是,屏幕显示为 720 x 1184(为软键移除了一些高度)和屏幕密度为 2 的 RAZR Maxx HD 不适用于此方法。

有没有人对打包算法有更深入的了解,以便一个设备的坐标可以用于任何设备?

我确实考虑过使用 AndroidViewClient 直接访问视图的按钮,但由于该脚本是为企业最终用户设计的,因此由于设备安全而无法使用。

0 投票
2 回答
6360 浏览

android - 在环境、ViewClient 中设置 ANDROID_HOME

我正在使用 viewclient 在我的测试中按下按钮。但是我没有设置 ANDROID_HOME 路径,尽管我在环境变量中设置了它。我正在使用 windows7 操作系统。

它引发了以下异常

我的环境变量

它看起来到处都是,弄乱了。所以想请教专家并在这里发布。提前致谢

0 投票
1 回答
697 浏览

android - Android:Python:AndroidViewClient Noob 麻烦

这是我当前项目的联盟屏幕:

行动联盟

..这是使用monkeyrunner dump.py的视图读数:

我的 avc_addallc.py 中的以下行按下了 ActionBar 中的 New ('+') 按钮:

...然后打开 AddAlliance 对话框:

添加联盟对话框

...具有以下视图读数:

我的 avc_addallc.py 中的下一行应该在第一个 EditText (Alliance_Name) 中放置文本:

它什么也不做,但返回此错误:

我哪里错了?谢谢!

0 投票
1 回答
610 浏览

android - AndroidViewClient 中的 findViewByIdOrRaise 出现问题

尝试使用 MonkeyRunner 执行一些测试并希望使用 AndroidViewClient 来处理 EditText 小部件。

我相信我正确使用了 AndroidViewClient (下面的相关内容),findViewByIdOrRaise()总是抛出错误。我已经尝试了所有想到的指定 ID 的变体。

这是我活动的 XML 中的一个片段:

在我的 MonkeyRunner 脚本中,我有以下内容:

当然,我的代码比显示的要多一点(但不多)。我去掉了所有看起来不相关的东西。我很乐意把它全部放在那里,但不想一开始就在这里吐出所有代码。

我已经查看了有关该主题的所有内容:

关于我做错了什么的任何想法?

0 投票
1 回答
739 浏览

android - AndroidViewClient 错误:设备是安全的

我正在尝试使用 AndroidViewClient 进行一些自动化。在 [github][1] 上有一个关于“安全模式”的页面。它指出:

AndroidViewClient 有两个可能的后端:

  • 视图服务器
  • UiAutomator

UiAutomator 适用于 Android API 16 及更高版本,因此如果您的设备有以前的版本,您唯一的选择是 ViewServer。

我正在尝试运行 dump.py,但出现“设备安全”错误。安全模式页面指出“您唯一的选择是 ViewServer”。什么是 viewServer 以及如何将它与 monkeyrunner 一起使用?

我很难理解这一点,因为根据 github 页面上的这张图片,如果我没有 API lvl 16 或更高版本,我可以使用 id 名称(如果我有)(我有)我只是不知道该怎么做。

总之,

我有 API 级别 15 及更低级别的设备和源代码,我想使用 viewID 自动化我的应用程序。那可能吗?

最后一个错误: