Appium 客户端类库

发表于:2018-10-09 10:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:煦色韶光    来源:51testing采编

    
  锁定注意,一些方法类似 endTestCoverage() 目前并不能完全支持。当这个问题被解决后,覆盖率支持才会被添加。如果你仍然想使用这些方法,请参考 GitHub 上关于 bindings 的文档。
  锁定屏幕。
  # ruby
  lock 5
  # python
  driver.lock(5)
  // java
  driver.lockScreen(3);
  // javascript
  driver.lock(3)
  // php
  $this->lock(3);
  // c#
  driver.LockDevice(3);
  // objective c
  [driver lockDeviceScreen:3];
  将应用切换至后台
  将当前的应用切换到后台,然后可以让其在指定时间内回到前台,或者让它一直留在后台。
  传递给这个方法的参数有两种类型:
  一个整型(秒):表示后台状态维持多久。-1 表示持续置于后台。这种风格的参数已经被废弃。
  一个看起来像 {"timeout": secs} 的对象。里面的 secs 是含义和第一个类型一样的整型数字(即表示置于后台多少秒),或者为 null (表示持续置于后台)。
  # ruby
  background_app 5  # 置于后台,持续5秒
  background_app -1  # 持续置于后台
  # python
  driver.background_app(5)  # 置于后台,持续5秒
  driver.background_app(-1) # 持续置于后台
  driver.background_app({'timeout': None}) # 持续置于后台
  // java
  driver.runAppInBackground(5);  // 置于后台,持续5秒
  driver.runAppInBackground(-1);  // 持续置于后台
  // javascript
  driver.backgroundApp(5);  // 置于后台,持续5秒
  driver.backgroundApp(-1); // 持续置于后台
  driver.backgroundApp({timeout: null}); // 持续置于后台
  // php
  $this->backgroundApp(5);
  $this->backgroundApp(-1);
  // c#
  driver.BackgroundApp(5);
  driver.BackgroundApp(-1);
  // objective c
  [driver runAppInBackground:3];
  [driver runAppInBackground:-1];
  收起键盘
  收起键盘。 注意: 在 iOS,这辅助功能并不能保证一定有效。因为没有用于隐藏键盘的自动化钩子方法(译者注:可以理解为 iOS 没有提供隐藏键盘的 API),而且应用是允许用户去使用各种策略去收起键盘的,无论是点击键盘以外的区域,还是向下滑动诸如此类...相比于使用该方法,我们更加鼓励你去思考 用户 在应用中是如何收起键盘(如滑动,点击一个固定的坐标,等等...),并让 Appium 去执行这些方法,而不是调用这个 API 。话虽如此,但这里默认的行为还是可能帮助到你的。
  # ruby
  hide_keyboard
  # python
  driver.hide_keyboard()
  // java
  driver.hideKeyboard();
  // javascript
  driver.hideKeyboard()
  // php
  $this->hideKeyboard();
  $this->hideKeyboard(array('strategy' => 'pressKey', 'key' => 'Done'));
  // c#
  driver.HideKeyboard("Done");
  // objective c
  [driver hideKeyboard];
  启动 Activity
  在当前 app 打开一个 activity,或者新打开一个应用并启动一个 acticity, 仅支持 Android
  // java
  driver.startActivity("appPackage","com.example.android.apis", null, null);
  // javascript
  driver.startActivity({appPackage: 'com.example.android.apis', appActivity: '.Foo'}, cb);
  # python
  driver.start_activity('com.example.android.apis', '.Foo')
  # ruby
  start_activity app_package: 'io.appium.android.apis', app_activity: '.accessibility.AccessibilityNodeProviderActivity'
  // c#
  driver.StartActivity("com.example.android.apis", ".Foo");
  // php
  $this->startActivity(array("appPackage" => "com.example.android.apis",
  "appActivity" => ".Foo"));
  // objective c
  [driver startActivity:@"com.example.android.apis" package:@".Foo"];
  打开通知栏
  打开通知栏,仅支持 Android。
  // java
  driver.openNotifications();
  // javascript
  driver.openNotifications(cb);
  # python
  driver.open_notifications()
  # ruby
  open_notifications
  // c#
  driver.OpenNotifications();
  // php
  $this->openNotifications();
  // objective c
  [driver openNotifications];
  应用是否已安装
  检测应用是否已被安装。
  # ruby
  is_installed? "com.example.android.apis"
  # python
  driver.is_app_installed('com.example.android.apis')
  // java
  driver.isAppInstalled("com.example.android.apis")
  // javascript
  driver.isAppInstalled("com.example.android.apis")
  .then(function (isAppInstalled) { /*...*/ })
  // php
  $this->isAppInstalled('com.example.android.apis');
  // c#
  driver.IsAppInstalled("com.example.android.apis-");
  // objective c
  [driver isAppInstalled:@"com.example.android.apis-"];
  安装应用
  在设备上安装应用。
  # ruby
  install 'path/to/my.apk'
  # python
  driver.install_app('path/to/my.apk')
  // java
  driver.installApp("path/to/my.apk")
  // javascript
  driver.installApp("path/to/my.apk")
  // php
  $this->installApp('path/to/my.apk');
  // c#
  driver.InstallApp("path/to/my.apk");
  // objective c
  [driver installAppAtPath:@"path/to/my.apk"];
  卸载应用
  卸载设备上的应用。
  # ruby
  remove 'com.example.android.apis'
  # python
  driver.remove_app('com.example.android.apis')
  // java
  driver.removeApp("com.example.android.apis")
  // javascript
  driver.removeApp("com.example.android.apis")
  // php
  $this->removeApp('com.example.android.apis');
  // c#
  driver.RemoveApp("com.example.android.apis");
  // objective c
  [driver removeApp:@"com.example.android.apis"];
  摇一摇
  模拟摇晃设备的操作。
  # ruby
  shake
  # python
  driver.shake()
  // java
  driver.shake()
  // javascript
  driver.shake()
  // php
  $this->shake();
  // c#
  driver.ShakeDevice();
  // objective c
  [driver shakeDevice];
  关闭应用
  关闭应用。
  # ruby
  close_app
  # python
  driver.close_app();
  // java
  driver.closeApp()
  // javascript
  driver.closeApp()
  // php
  $this->closeApp();
  // c#
  driver.CloseApp();
  // objective c
  [driver 
  启动(Launch)
  为 desired capabilities 启动一个 session。请注意只有设置了 autoLaunch=false 关键字时才会生效。这不是为了随意启动一个应用或 activities ——如果你想这么做,请使用 start_activity 这个 desired capability 的参数。这个方法的使用场景是在你设置了 autoLaunch=false 后,用来继续执行初始化("launch")流程的。(译者注:举个例子,国产系统经常会在应用安装时弹出提示窗阻碍安装,此时可以通过 autoLaunch=false 来让应用安装后先执行你的脚本来关掉弹窗,然后再用这个函数来继续启动应用。)
  # ruby
  launch_app
  # python
  driver.launch_app()
  // java
  driver.launchApp()
  // javascript
  driver.launchApp()
  // php
  $this->launchApp();
  // c#
  driver.LaunchApp();
  // objective c
  [driver launchApp];
  重置
  重置应用。(译者注:类似于清除缓存)
  # ruby
  driver.reset
  # python
  driver.reset()
  // java
  driver.resetApp()
  // javascript
  driver.resetApp()
  // php
  $this->reset();
  // c#
  driver.ResetApp();
  // objective c
  [driver resetApp];
  可用的上下文(Contexts)
  列出所有可用的上下文(contexts)。
  # ruby
  context_array = available_contexts
  # python
  driver.contexts
  // java
  driver.getContextHandles()
  // javascript
  driver.contexts().then(function (contexts) { /*...*/ })
  // php
  $this->contexts();
  // c#
  driver.GetContexts()
  // objective c
  NSArray *contexts = driver.allContexts;
  当前上下文(context)
  列出当前的上下文(context)。
  # ruby
  context = current_context
  # python
  driver.current_context
  // java
  driver.getContext()
  // javascript
  driver.currentContext().then(function (context) { /*...*/ })
  // php
  $this->context();
  // c#
  driver.GetContext()
  // objective c
  NSString *context = driver.context;

  切换至默认的上下文(context)
  切换回默认的上下文(context)。(译者注:一般就是原生上下文 “NATIVE_APP”)
  # ruby
  switch_to_default_context
  # python
  driver.switch_to.context(None)
  // java
  driver.context();
  // javascript
  driver.context()
  // php
  $this->context(NULL);
  // c#
  driver.SetContext();
  // objective c
  [driver setContext:nil];
  应用的字符串
  获得应用的字符串。(译者注:这里实际指的是返回应用的多语言文本,即每个 string 变量及在指定语言上的显示内容。例如 {"action_forgot_password":"Forgot your password?"} 。在 android 上对应的是项目中的 strings.xml 多语言配置文件)
  # ruby
  app_strings
  # python
  driver.app_strings
  // java
  driver.getAppStrings();
  // javascript
  driver.getAppStrings().then(function (appStrings) { /*...*/ })
  // php
  $this->appStrings();
  $this->appStrings('ru');
  // c#
  driver.GetAppStrings();
  // objective c
  [driver appStrings];
  [driver appStringsForLanguage:"@ru"];
  按键事件
  给设备发送按键事件。
  # ruby
  key_event 176
  # python
  driver.keyevent(176)
  // java
  driver.sendKeyEvent(AndroidKeyCode.HOME);
  // javascript
  driver.deviceKeyEvent(wd.SPECIAL_KEYS.Home)
  // php
  $this->keyEvent('176');
  // c#
  driver.KeyEvent("176");
  // objective c
  NSError *err;
  [driver triggerKeyEvent:176 metastate:0 error:&err];
  当前 Activity
  获取当前的 Acticity。仅支持 Android。
  # ruby
  current_activity
  # python
  driver.current_activity
  // java
  driver.currentActivity();
  // javascript
  driver.getCurrentActivity().then(function (activity) { /*...*/ })
  // php
  $this->currentActivity();
  // c#
  driver.GetCurrentActivity();
  // objective c
  NSError *err;
  [driver currentActivity];


   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号