#9 楼 @sincool 其实这个问题解决方法就是看提示信息了
Original error: com.youqian.activity/.guide.SplashActivity never started. Current: com.youqian.activity/.guide.GuideActivity
所以说你就直接将
desired_caps['appActivity'] = 'com.youqian.activity.guide.SplashActivity'
desired_caps[ 'appWaitActivity'] = 'com.youqian.activity.guide.SplashActivity'
改成
desired_caps['appActivity'] = 'com.youqian.activity.guide.GuideActivity'
desired_caps[ 'appWaitActivity'] = 'com.youqian.activity.guide.GuideActivity'
因为它告诉你说当前的 Activity 是 GuideActivity 虽然我还不太清楚 waitActivity 是什么作用。
. 很明显的问题。。
{"name": "u'WEBVIEW_com.tencent.android.qqdownloader'"}
你为什么要加 u''呢
改成
{"name": "WEBVIEW_com.tencent.android.qqdownloader"}
如果你是用 UIAutomator 的话 直接就是
uiDevice.pressKeyCode(26); //KEYCODE_POWER=26;
appium 的话
driver.keyevent(26)
#4 楼 @wyb199026 使用 appium 的键盘 就如楼上的代码就不会出现你遇到的问题了。
我运行的时候默认都是先开启 genemotion 的模拟器,没出现你说的情况,如果你那边有问题,试试看能不能通过将环境变量中的 adb 路径配置成第三方模拟器的 adb.
#9 楼 @xushizhao 好像有点明白了 绑定一个 Accessibility Service 服务的应用 这个不难 我去试试看。
#7 楼 @xushizhao 没太明白,开启 Accessibility Service 这个我懂,可是跟我一开始的问题实际在 uiautomator 中如何使用还是没有解决。另外我应该不用去创建一个 Accessibility service 之类的吧,因为默认 Uiautomator 已经有了,下面就是获取 LastTraversedText() 的源代码。
public QueryController(UiAutomatorBridge bridge) {
mUiAutomatorBridge = bridge;
bridge.addAccessibilityEventListener(new AccessibilityEventListener() {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
synchronized (mLock) {
mLastPackageName = event.getPackageName().toString();
// don't trust event.getText(), check for nulls
if (event.getText() != null && event.getText().size() > 0) {
if(event.getText().get(0) != null)
mLastActivityName = event.getText().get(0).toString();
}
switch(event.getEventType()) {
case AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY:
// don't trust event.getText(), check for nulls
if (event.getText() != null && event.getText().size() > 0)
if(event.getText().get(0) != null)
mLastTraversedText = event.getText().get(0).toString();
if(DEBUG)
Log.i(LOG_TAG, "Last text selection reported: " + mLastTraversedText);
break;
}
mLock.notifyAll();
}
}
});
}
#5 楼 @xushizhao 问题就是在于 我要怎么才能够产生 TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY 这个事件,官网说
You can write a test to perform directional arrow presses to focus on different elements inside a WebView
就可以了,貌似不太行。我去研究研究。
getLastTraversedText() 能够来个 demo 解释下这个的用法吗?
@xushizhao 还少了
wait(UiObject2Condition condition, long timeout)
wait(SearchCondition condition, long timeout)
说下我自己的经验
第一个问题一般是由于 webview 没有开调试:
For a real device you need to have "setWebContentsDebuggingEnabled" in the web view. Without it the web view is not exposed to automation tools
所以对应的 webview 需要增加:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
第三个问题:
Remote Debugging on Android with Chrome 看看这个吧,。
至于第二个问题实在不清楚。
#5 楼 @treesea2015 请问如何改造 reportng 能给下代码介绍下吗?
#13 楼 @xushizhao 411249087 thanks
问下 接口的返回的内容是如何校验的?是需要校验所有的值呢还是说只是校验一些关键的内容。另外能够详细说下规则配置那部分吗?
看了下,工程量很大啊,web 界面是开发做的,还是测试人员负责的。
又是干货。果断收藏
—— 来自 TesterHome 官方 安卓客户端
API 自动化测试框架分享 +1