美文网首页
Hello,Appium

Hello,Appium

作者: landscape_f117 | 来源:发表于2020-04-22 18:45 被阅读0次

第一篇博客,记录一下使用appium遇到的几个问题。

找不到设备

image

这种情况是我本地cmd或者as 启动了adb,就会导致appium启动的adb找不到连接的设备。最开始的解决方法就是用任务管理器干掉其他adb.exe。

image

同理,如果appium能连接到设备,cmd启动的adb也会无法连接设备。

后来发现我本地之前通过环境变量改了adb的端口到65530。怀疑和这个端口的设置有关,把这个系统变量删掉之后,果然就不会出现找不到设备的情况,但是每次执行完appium的用例,用cmd查看adb都会提示adb server is out of date. killing...

google之后得到答案:
因为本地安装了多个adb版本。参考https://stackoverflow.com/questions/36731277/adb-server-is-out-of-date-killing

删掉多余版本的path之后果然没有这个问题了。

顺带看了一下adb原理,手机端adbd和host的adb server通过tcp进行通信,如果安装了不同版本的adb,会导致手机端发送消息中携带的版本信息同host不一致,就会导致Out of date的问题。

报错

报错内容:
[UiAutomator2] [UIAutomator2] java.lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{io.appium.uiautomator2.server.test/android.support.test.runner.AndroidJUnitRunner}

解决
https://github.com/appium/appium/issues/10993

FYI. I ran into the same error
java.lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{io.appium.uiautomator2.server.test/android.support.test.runner.AndroidJUnitRunner} from pid=28208, uid=28208 not allowed because package io.appium.uiautomator2.server.test does not have a signature matching the target io.appium.uiautomator2.server
and solved the issue by manually uninstall previously installed appium-uiautomator2-server and appium-uiautomator2-servertest
adb uninstall io.appium.uiautomator2.server
adb uninstall io.appium.uiautomator2.server.test

删掉测试机上原有的server app即可。

执行任意的shell命令

Appium提供了通过app、appPackage、appActivity的方式去启动待测app,但是如果要使用intent的方式去启动一个activity要怎么做呢?

如果直接使用adb shell 是很简单的 adb shell am start -a + action 即可。但是appium好像并不支持。
官方文档提供了[StartActivity]([http://appium.io/docs/en/commands/device/activity/start-activity/]

但是使用起来有诸多限制。翻阅了appium-android-driver在github的说明文档,果然有发现:

Opt-In Features (With Security Risk)
These can be enabled when running this driver through Appium, via the --allow-insecure or --relaxed-security flags.

Feature Name Description
get_server_logs :Allows retrieving of Appium server logs via the Webdriver log interface
adb_shell :Allows execution of arbitrary adb shell commands via the "mobile: shell" command

这个特性可以执行任意的adb命令,这下可爽了。再翻一下官方文档:

How To Execute Shell Commands On The Remote Device

image.png

这下问题完美解决了。

注意在启动server时勾选如下选项:


image.png

否则会报错哦。

相关文章

  • Hello,Appium

    第一篇博客,记录一下使用appium遇到的几个问题。 找不到设备 这种情况是我本地cmd或者as 启动了adb,就...

  • Appium

    iOS自动化测试完全实现预估周期 Appium iOS入门环境搭建Hello world(Python重点学习)n...

  • mac本appium环境搭建一

    Node.js Appium Appium - desktop Appium - doctor Appium - ...

  • Appium

    Appium介绍 https://github.com/appium/appium Appium is an op...

  • 02: Appium环境安装配置

    1.下载安装 Appium分为Appium和Appium GUI,建议下载Appium GUI。因为Appium ...

  • [全] Appium使用手册

    Appium使用手册 Appium介绍 Appium环境安装配置 Appium Api Appium键盘事件 An...

  • appium环境搭建

    环境依赖 Node.js Appium Appium-desktop Appium-doctor Appium-...

  • Appium移动端录制+谷歌IDEWeb端录制

    Appium链接真机+录制: Appium下载:http://appium.io/[http://appium.i...

  • Appium-desktop界面简介

    Appium Desktop介绍: Appium Desktop是appium更为优化的图形界面和appium相关...

  • Appium组件

    Appium组件 Appium Server Appium Server就是Appium的服务端——一个web接口...

网友评论

      本文标题:Hello,Appium

      本文链接:https://www.haomeiwen.com/subject/kcupihtx.html