bootstrap之Wake&&PressBack&&TakeScreenshot&&OpenNotification
2014-07-19 17:07
344 查看
Wake
package io.appium.android.bootstrap.handler; import android.os.RemoteException; import com.android.uiautomator.core.UiDevice; import io.appium.android.bootstrap.AndroidCommand; import io.appium.android.bootstrap.AndroidCommandResult; import io.appium.android.bootstrap.CommandHandler; /** * This handler is used to power on the device if it's not currently awake. * */ public class Wake extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) { // only makes sense on a device try { UiDevice.getInstance().wakeUp(); return getSuccessResult(true); } catch (final RemoteException e) { return getErrorResult("Error waking up device"); } } }
wake事件为唤醒手机,有的时候手机处于睡眠状态就需要点亮屏幕,如果此时屏幕就是亮的,那么不做任何操作。
PressBack
package io.appium.android.bootstrap.handler; import com.android.uiautomator.core.UiDevice; import io.appium.android.bootstrap.AndroidCommand; import io.appium.android.bootstrap.AndroidCommandResult; import io.appium.android.bootstrap.CommandHandler; /** * This handler is used to press back. * */ public class PressBack extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) { UiDevice.getInstance().pressBack(); // Press back returns false even when back was successfully pressed. // Always return true. return getSuccessResult(true); } }
在手机上的返回键。
TakeScreenshot
package io.appium.android.bootstrap.handler; import com.android.uiautomator.core.UiDevice; import io.appium.android.bootstrap.AndroidCommand; import io.appium.android.bootstrap.AndroidCommandResult; import io.appium.android.bootstrap.CommandHandler; import java.io.File; /** * This handler is used to TakeScreenshot. * */ public class TakeScreenshot extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) { final File screenshot = new File("/data/local/tmp/screenshot.png"); try { screenshot.getParentFile().mkdirs(); } catch (final Exception e) { } if (screenshot.exists()) { screenshot.delete(); } UiDevice.getInstance().takeScreenshot(screenshot); return getSuccessResult(screenshot.exists()); } }
截屏并将图片保存在/data/local/tmp路径下的screenshot.png文件中。
OpenNotification
package io.appium.android.bootstrap.handler;import com.android.uiautomator.core.UiDevice;
import io.appium.android.bootstrap.AndroidCommand;
import io.appium.android.bootstrap.AndroidCommandResult;
import io.appium.android.bootstrap.CommandHandler;
import static io.appium.android.bootstrap.utils.API.API_18;
/**
* This handler is used to open the notification shade on the device.
*
*/
public class OpenNotification extends CommandHandler {
/*
* @param command The {@link AndroidCommand} used for this handler.
*
* @return {@link AndroidCommandResult}
*
* @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android.
* bootstrap.AndroidCommand)
*/
@Override
public AndroidCommandResult execute(final AndroidCommand command) {
// method was only introduced in API Level 18
if (!API_18) {
return getErrorResult("Unable to open notifications on device below API level 18");
}
// does not make sense on an element
if (command.isElementCommand()) {
return getErrorResult("Unable to open notifications on an element.");
}
final UiDevice device = UiDevice.getInstance();
if (device.openNotification()) {
return getSuccessResult(true);
} else {
return getErrorResult("Device failed to open notifications.");
}
}
}
打开通知栏操作,api18以后在UiDevice中添加了openNotification()方法,打开通知栏。所以该事件就是去调用该方法。
相关文章推荐
- UIApplicationUserDidTakeScreenshotNotification检查截屏并获取截屏后的图片
- 基于WebDriver&TestNG 实现自己的Annotation @TakeScreenshotOnFailure
- 基于WebDriver&TestNG 实现自己的Annotation @TakeScreenshotOnFailure
- bootstrap之PressKeyCode&&LongPressKeyCode
- Robotium--takeScreenshot(截图)
- 雾山的Robotium学习笔记---takeScreenshot(截图)
- bootstrap之PressKeyCode&&LongPressKeyCode
- Open Baidu webpage and type in Chinese characters to start searching, press “Back” button to go to B
- Robotium--takeScreenshot(截图)
- [ WARN ] Keyword 'Capture Page Screenshot' could not be runon failure: No browser isopen
- Java+ selenium+maven截图方法TakeScreenshot
- 雾山的Robotium学习笔记---takeScreenshot(截图)
- Java+Selenium3方法篇30-Selenium中截图方法-TakeScreenshot
- XLS文件读取 & cl_gui_frontend_services=>file_open_dialog
- 74 Open Source VoIP Apps & Resources
- She's Back.
- Some of the best Open Source Project's in VC++ & MFC
- window.open("n_p_pro_budget_Up?budget_no="+budgetSn, "", "width=500, height=400,scrollbars=auto,top=240,left=300");
- I'm back!
- Turbo C 编程中“Unable to open include file 'stdio.h'”问题的解决