完整的输出贴一下, 还有 appium log 的输出
为什么 uiautomator 找不到"粘贴"这个按钮, 我还在查.
#21 楼 @spikeshen 因为 appium 暂时没法输入中文,所以我才使用复制粘贴的方法去自动化, 但是粘贴实现不了.另外一个思路是直接调用 android 的输入法底层的框架, 直接使用 InputConnection.commitText 来实现输入, 因为其他的输入法也是直接调用这个方法的. 如果粘贴这个搞不定, 我就只能使用输入法底层函数了.
#21 楼 @spikeshen send event 我也试过了, 在我的手机上不生效, back 和 muenu 都行, 但是唯独 combo 组合键不生效, 你可以试试
#20 楼 @spikeshen
我跟了下 uiautomator 的源代码, 发现底层是调用的这个函数.
http://developer.android.com/tools/help/uiautomator/UiDevice.html#pressKeyCodeint(, int)
我困惑的是第二个参数, 他到底应该如何写, 是不是 keyevent 里面的 KEYCODE_CTRL_LEFT ?
Parameters
keyCode the key code of the event.
metaState an integer in which each bit set to 1 represents a pressed meta key
#14 楼 @spikeshen ctrl+v 貌似 android 不支持, 我用了如下代码
driver.execute_script("mobile: keyevent", :keycode=>50 )
driver.execute_script("mobile: keyevent", :keycode=>50 , :metastate=>113)
v 输入进去了, 但是 ctrl+v 没有生效.
#17 楼 @spikeshen 发现 appium 提供了一个 pressKeycode 方法. 貌似可以发送特殊的按键消息.
https://github.com/appium/appium/blob/fa1f063018c5c173eddfbf8fbdb7c58d860c4db2/lib/devices/android/bootstrap/src/io/appium/android/bootstrap/handler/PressKeyCode.java
#15 楼 @spikeshen 所有的 keyevent 在http://developer.android.com/reference/android/view/KeyEvent.html, 貌似 adb shell input keyevent 还不行, 需要使用 adb shell sendevent ..
#12 楼 @spikeshen 跟 usb 没什么关系吧, 我从 sdk 中翻到了这个资料..http://developer.android.com/about/versions/android-4.3.html
Select text and copy/paste
The AccessibilityNodeInfo now provides APIs that allow an AccessibilityService to select, cut, copy, and paste text in a node.
To specify the selection of text to cut or copy, your accessibility service can use the new action, ACTION_SET_SELECTION, passing with it the selection start and end position with ACTION_ARGUMENT_SELECTION_START_INT and ACTION_ARGUMENT_SELECTION_END_INT. Alternatively you can select text by manipulating the cursor position using the existing action, ACTION_NEXT_AT_MOVEMENT_GRANULARITY (previously only for moving the cursor position), and adding the argument ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN.
You can then cut or copy with ACTION_CUT, ACTION_COPY, then later paste with ACTION_PASTE.
Note: These new APIs are also available for previous versions of Android through the Android Support Library, with the AccessibilityNodeInfoCompat class.
#9 楼 @spikeshen 问题是我用的是 uiautomator, 我不能操作内部方法, 只能在外部模拟. 我昨天查 sdk, 好像说有个什么事件, 是可以直线复制粘贴的. 貌似只要发送一个特殊的按键就可以了. 但是没找到细节.
#7 楼 @spikeshen 我指的粘贴, 也不是搜狗的粘贴, 是长按操作出来的那个, 的确属于 IME, 但是 uiautomator 应该是可以抓到的. 因为它是跨 app 的
#5 楼 @shenkai600 原生的也可以获取, 比如系统设置里面的所有控件, 对于 paste 按钮无法点击, 貌似是跟布局有关.
我用 uiautomator 的 event 命令也获取到了粘贴的消息.
但是在自动化的时候找不到
12-24 16:59:53.933 EventType: TYPE_VIEW_CLICKED; EventTime: 34572995; PackageName: com.taobao.taobao; MovementGranularity: 0; Action: 0 [ ClassName: android.widget.TextView; Text: [粘贴]; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0
#1 楼 @lihuazhang 能获取到输入法的界面吗
#4 楼 @shenkai600 升级就可以了
#9 楼 @plasma http://testerhome.com/topics/303 这个帖子也是这个问题, 也解决了. @xiaomayi0323 跟相对路径无关吧, 可能是你的路径中有空格
#1 楼 @lihuazhang 要不直接禁止论坛贴图吧
#30 楼 @spikeshen 不是的, 可以直接调用内置输入法的 commitText 也可以. 只是没人去封装.
输入法也是写好的了, 可以直接编译出来使用.
#6 楼 @xiaomayi0323 恩, 貌似别人也遇到过了,检查下环境配置吧
#27 楼 @softblank -U 是模拟器和真机都支持. 其实就是传入参数给了 adb -s
#11 楼 @rockchensir 贴出来出错的 log 吧, 别截图了.
#8 楼 @rockchensir 加油
#6 楼 @rockchensir 修改这个文件, lib/helpers.js, 尝试修改为
var locs = ['android-4.2', 'android-17', 'android-4.3', 'android-18', 'android-4.4', 'android-19', ];