Pycharm连接虚拟机测试报错 Logcat terminated with code 0, signal null

一:问题详情描述

1:Pycharm报错详情

An unknown server-side error occurred while processing the command. Original error: Could not find a connected Android device in 20088ms.

2:代码

下面展示一些 内联代码片

from time import sleep
from appium import webdriver

desired_caps = {}
desired_caps["platformName"] = "Android"
desired_caps["platformVersion"] = "9"
desired_caps["deviceName"] = "192.168.56.101:5555"
desired_caps["appPackage"] = "com.android.settings"
desired_caps["appActivity"] = ".Settings"
desired_caps["noReset"] = True
desired_caps["unicodeKeyboard"] = True
desired_caps["resetKeyboard"] = True
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

3:Appium服务端日志信息

在这里插入图片描述

4:android手机版本

在这里插入图片描述

二:解决方案

因为刚开始做测试遇到的问题,不太了解appium的架构和脚本运行流程,出现了此问题在网上寻找解决办法大都相似但不相同,花费了很多时间也没找到解决方案,后面了解了appium架构原理才理出了一点头绪。希望能帮到遇到同样问题的伙伴。

1 :相关知识点

Appium架构原理:

原理图如图(2-1)
(1)Appium服务器的主要功能是接受从Appium客户端发起的连接,监听从客户端发送来的命令,将命令发送给
bootstrap.jar(iOS手机为bootstrap.js)执行,并将命令的执行结果通过HTTP应答反馈给Appium客户端。
(2)Appium客户端。它主要是指实现了Appium功能的WebDriver协议的客户端Library,它负责与Appium服务器建立连接,并将测试脚本的指令发
送到Appium服务器。
(3)bootstrap.jar是在Android手机上运行的一个应用程序,它在手机上扮演TCP服务器的角色。当Appium服务器需要运行命令时,Appium服务器会与bootstrap.jar建立TCP通信,并把命令发送给bootstrap.jarbootstrap.jar负责运行测试命令。
(4)Session。Appium的客户端和服务端之间进行通信都必须在一个Session的上下文中进行。客户端在发起通信的时候首先会发送一个叫作“Desired Capabilities”的JSON对象给服务器。服务器收到该数据后,会创建一个session并将session的ID返回到客户端。之后客户端可以用该session的
ID发送后续的命令。
(5)Desired Capabilities。Desired Capabilities是一组设置的键值对的集合,其中键对应设置的名称,而值对应设置的值。Desired Capabilities主要用于通知Appium服务器建立需要的Session,其中一些设置可以在Appium运行过程中改变Appium服务器的运行行为。
脚本的运行流程:
比如脚本上的一个点击操作,在Appium服务器上都是touch指令,当指令发送到Android系统上时,Android系统上的bootstrap.jar将调用UIAutomator的方法实现点击操作;而当指令发送到iOS系统上时,iOS的Bootstrap.js将调用UIAutomation的方法实现点击操作。
原理图(2-1)
图片: 原理图(2-1)

2:错误日志提示

一定要往上翻查看日志详情,只看错误末尾啥信息也看不出来

我的Appium服务端日志错误信息如下图:
在这里插入图片描述这个说明HTTP连接建立成功,问题出在TCP连接上或者bootstrap.jar上或者uiautomator上

在这里插入图片描述这个提示少安装了一个io.appium.uiautomator2.server
那么这个是什么呢?
在Appium架构原理已经过,Bootstrap.jar调用UIAutomator的方法实现点击操作,那么没有找到就出错。UIAutomator是自动安装的,在你运行客户端脚本时会自动在android手机上安装,查看可以在手机设置-》应用 里面查看已经安装的3个安装包,AppiumSettings、uiautomator1、uiautomator2。这个包安装可能需要几次,不成功可以清除数据卸载掉,再重新运行脚本。我这个只安装成功两个包AppiumSettings和uiautomator2。可以正常使用,因为1和2只是版本不同,然后在脚本里添加一行代码,再来运行一次

在这里插入图片描述

在这里插入图片描述

from time import sleep
from appium import webdriver

desired_caps = {}
desired_caps["platformName"] = "Android"
desired_caps["platformVersion"] = "7.1.2"
desired_caps["automationName"] = "uiautomator1"
desired_caps["deviceName"] = "127.0.0.1:62025"
desired_caps["appPackage"] = "com.android.settings"
desired_caps["appActivity"] = ".Settings"
desired_caps["noReset"] = True
desired_caps["unicodeKeyboard"] = True
desired_caps["resetKeyboard"] = True
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
print("执行sleep之前")
sleep(3)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据你提供的引用内容,报错"Process finished with exit code -1073741795 (0xC000001D)"通常是由于程序中出现了一些错误导致的。这个错误代码对应的是操作系统的异常退出代码,具体原因可能有很多种。以下是一些可能导致该错误的常见原因和解决方法: 1. 内存溢出:如果你的程序使用了大量的内存,而你的系统内存不足以支持,就会导致程序异常退出。可以尝试优化你的代码,减少内存使用量。 2. 无效的指针引用:如果你的程序中存在无效的指针引用,就会导致程序异常退出。可以检查你的代码,确保没有使用无效的指针。 3. 依赖库问题:有时候,程序中使用的依赖库可能与系统环境不兼容,导致程序异常退出。可以尝试更新或重新安装相关的依赖库。 4. 硬件问题:有时候,硬件故障也可能导致程序异常退出。可以检查你的硬件设备是否正常工作。 5. 其他问题:除了上述原因外,还有一些其他可能导致程序异常退出的问题,比如文件读写错误、权限问题等。可以仔细检查你的代码,查找可能的问题。 总之,要解决这个报错,你需要仔细检查你的代码,并尝试找出可能导致程序异常退出的原因。根据具体情况采取相应的解决方法。如果以上方法都无法解决问题,建议你提供更多的代码和错误信息,以便更好地帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值