Appium环境搭建,华为nova8鸿蒙系统(包括环境安装,环境配置)(一)
1.安装代码工具包
pip install appium-python-client 
2.安装JDK
参考链接:
ant+jmeter+jenkins从0实现持续集成(Windows)-CSDN博客
3.下载并安卓SDK
下载地址:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载
注意:adb这个工具很重要,
存在于sdk的 **\SDK安装路径\sdk\platform-tools 目录下
上面的地址是android sdk下载的国内网址,有梯子的可以翻墙找国外的下载,我是用国内的这个网址。找到下面sdk tools

这里选择的sdk tools工具,两个版本都可以,如果有更新会有不同,根据各自需求选择版本即可,上面的版本号我不太清楚所以选了下面的。
这里注意exe和zip的区别,我两个都试过,exe安装会直接安装在c盘,没得你选。如果比较在意这点的人建议和我一样选zip文件。

解压后目录

直接双击运行这个SDK Manager.exe文件,开始安装
如下,正处于安装过程中。

有几个必须要安装的,如上图所示的,Tools文件夹里面的Android SDK Tools(这个我们在之前的一步已经下载好了的,一般不会让你再安装了,不过有可能会让你更新),然后就是Android SDK Platform-tools和Android SDKBuild-tools,注意只需要下载最新的版本就行了

然后就是API的选择了。这里提供了Android 2.2到Android 8.x的很多版本的API,新手直接选一个最新的就算了,因为Android是向下兼容的。其他的以后你要用到了在下载就行了(因为下载安装的速度实在太慢)
如果你选择其他,比如我选择的是9,那你要把默认选择的那个最新的勾掉
这里需要说明的是,如果你以后不打算用模拟器调试,而是一直用真机来调试的话,那么就可以不用装“system images“了。不过新手的话,不知道怎么选择,还是建议直接全部勾上吧

有一个没有安装成功,重新安装了几次,也没成功;反正是图片没安装成功,没成功就算了

看到后面显示installed就代表安装成功了。
最后就是extras文件夹中的东西了
理论上来说,extras中的东西如果网速允许,时间充沛的话,就都下载了吧,因为都是好东西。不过一开始安装的话,可以只用安装上图中的两个, 下载Android Support Repository和Google USB Driver

安装过程中注意:如果安装的时候发现前面有一个红色的叉叉标志,可以直接点击该行,你会看到一个Accept License选项,直接点击即可,然后再点击Install按钮进行安装,如下正处于安装中,等待完成就可以关闭了。

Accept License直接勾选全部所选内容
点击Install后,
注意:下载可能比较慢,耗费时间长,最重要的是保证网络好,没下载成功的,就重进重选重新下载。
用zip的话,解压到F盘之后,需要配置环境变量。在“我的电脑”右键,“属性”,“高级系统设置”,“高级”,“环境变量”,“系统变量”增加一个环境变量“ANDROID_HOME”,浏览到对饮你解压的android sdk目录。

之后找到环境变量“path”,添加下面几句内容:
F:\网课学习的笔记\appium\android-sdk_r24.4.1-windows\android-sdk-windows\platform-tools
F:\网课学习的笔记\appium\android-sdk_r24.4.1-windows\android-sdk-windows\tools
F:\网课学习的笔记\appium\android-sdk_r24.4.1-windows\android-sdk-windows\build-tools\29.0.3


最后可以检验是否成功配置好环境变量;显示版本,表示安装成功!
Windows图标+R:cmd命令打开命令行窗口,输入adb

4.安装appium server desktop
Appium安装提供两种方式:桌面版和命令行版。其中桌面版又分为 Appium GuI 和 Appium Desktop 。作为初学者,用桌面版,对初学者比较友好。
官网下载地址:Releases · appium/appium-desktop · GitHub
找到Appium-Server-GUI-windows-1.22.3-4.exe

双击Appium-Server-GUI-windows-1.22.3-4.exe安装


等待安装完成。

桌面图标双击打开appium

检查配置
5.手机端设置
以华为手机为例(华为nova8):
① 打开手机USB调试,进入 设置-关于手机,多次点击版本号,激活USB调试

然后在“设置”中,找到“开发人员选项”(或者直接在设置中搜索开发人员选项),打开“USB 调试”,如果有‘“仅充电”模式下允许ADB调试’,就打开,这样就不用设置usb传输模式,如果没有,就下来系统菜单找到“USB的设置”选项卡,点击进入设置传输文件模式即可。

注意:
◆确保电脑上没有其他的adb程序软件,如杀毒软件,安全管家,手机助手
◆确保手机端开发者选项中对应的adb权限全部打开
插入手机usb

然后打开cmd输入adb devices(usb调试打开,用adb应该就可以连上了)
出现如下图所示,代表手机和电脑连上了

如有对应的设备信息,说明连接成功,如果没有多尝试几次,或者换一条usb数据线。
接下来需要通过adb命令获取一系列信息
华为(鸿蒙系统)貌似归于Android一类的,所以配置信息中,platformName是Android。

C:\Users\Admin>adb shell getprop ro.build.version.release
12C:\Users\Admin>adb devices -l
List of devices attached
NBLVB21204000278 device product:ANG-AN00 model:ANG_AN00 device:HWANG transport_id:2C:\Users\Admin>adb shell dumpsys activity | findstr "mResume"
mResumedActivity: ActivityRecord{d95ca3d u0 com.sina.weibo/.MainTabActivity t3783}
第一个命令结果是12,即Android系统版本(platformVersion)是12
第二个命令查看设备的详细信息,ANG-AN00 是设备名(deviceName)
第三个命令可以找到你当前手机正在打开的应用信息,也就是说你要测什么app就提前打开这个app,然后通过第三个命令获取这个app的信息,后面appium连接的时候就会打开这个app。我打开的是微博,所以,
com.sina.weibo 就是你对应appPackage
.MainTabActivity就是对应的appActivity
{"platformName": "Android","platformVersion": "12","deviceName": "ANG-AN00","appPackage": "com.sina.weibo","appActivity": ".MainTabActivity",#自动化引擎"automationName":"UiAutomator2",#确保自动化之后不重置app"noReset": true
}
注:
如果打开的是其他软件,比如说打开了boss直聘

com.hpbr.bosszhipin 就是你对应appPackage
.module.main.activity.MainActivity 就是对应的appActivity
对应appium server配置
{"platformName": "Android","platformVersion": "12","deviceName": "ANG-AN00","appPackage": "com.hpbr.bosszhipin","appActivity": ".module.main.activity.MainActivity",#自动化引擎"automationName":"UiAutomator2",#确保自动化之后不重置app"noReset": true
}
6.环境验证
(1)启动appium server

点击放大镜

如果弹出网址,说明你当前appium的版本比较新,appium server和appium inspector已经分离成两个软体。我所下载的新版appium1.22.3与inspector分离(appium1.22.X后的版本都需要单独下载Appium-Inspector)
所以在该网页下载Appium-Inspector,点击Tags

选择最新版下载

下载后双击Appium-Inspector-2024.6.1-win.exe安装即可(安装简单,自行安装)

安装完成后,桌面多了个图标

双击打开

按照如下设置:


点击start Session后,此时还是不能对微博进行元素定位
选择元素,只能选择整个界面,无法选择单个元素

造成的原因:appium server报错(500,404,304等)

尝试解决一:加上这行(没有完全解决appium报错)
#设置session的超时时间,单位秒,默认60s
"newCommandTimeout":6000,

再点击start session,如下图,可对单个元素定位了(不是每次都可以,待研究)
尝试解决二:可以重启appium server,重新再start session试试
注意:(1)首次点击start session时,要确认有如下信息(微博软件是打开的),否则可能会报错
(2)运行后,手机的变化
首次运行后,手机自动新增两个app
appium-settings(应用会自动安装并启用)桌面会显示
UiAutomator2(Appium优化后的安卓底层自动化驱动)
注意:UiAutomator2再手机桌面是看不到的,得再应用管理才有
以上两个app确保可以自动安装,并开启所有权限

环境安装到此就结束了!!!
最后,如需要安装包,可私聊我,或在资源包中自行下载!!!

相关文章:
Appium环境搭建,华为nova8鸿蒙系统(包括环境安装,环境配置)(一)
1.安装代码工具包 appium python client pip install appium-python-client 2.安装JDK 参考链接: antjmeterjenkins从0实现持续集成(Windows)-CSDN博客 3.下载并安卓SDK 下载地址:AndroidDevTools - Android开发工具 Android…...
【React】React18 Hooks 之 useReducer
目录 useReducer案例1:useReducer不带初始化函数案例2:useReducer带初始化函数注意事项1:dispatch函数不会改变正在运行的代码的状态注意事项2:获取dispatch函数触发后 JavaScript 变量的值注意事项3:触发了reducer&am…...
【cocos creator】2.4.x实现简单3d功能,点击选中,旋转,材质修改,透明材质
demo下载:(待审核) https://download.csdn.net/download/K86338236/89527924 const {ccclass, property } = cc._decorator;const enum box_color {NORMAL = 0,DASHED_LINE = 1,//虚线TRANSLUCENT = 2,//半透明 }@ccclass export default class main extends cc.Component {…...
Android EditText+ListPopupWindow实现可编辑的下拉列表
Android EditTextListPopupWindow实现可编辑的下拉列表 📖1. 可编辑的下拉列表✅步骤一:准备视图✅步骤二:封装显示方法✅步骤三:获取视图并监听 📖2. 扩展上下箭头✅步骤一:准备上下箭头icon图标✅步骤二&…...
dify/api/models/task.py文件中的数据表
源码位置:dify/api/models/task.py CeleryTask 表结构 字段英文名数据类型字段中文名字备注idIntegerID自增主键,任务ID序列task_idString任务ID唯一任务标识statusString状态默认值为 PENDINGresultPickleType结果可为空date_doneDateTime完成日期默认…...
hdu物联网硬件实验3 按键和中断
学院 班级 学号 姓名 日期 成绩 实验题目 按键和中断 实验目的 实现闪灯功能转换 硬件原理 无 关键代码及注释 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…...
pytorch通过 tensorboardX 调用 Tensorboard 进行可视化
示例 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from torchvision import datasets, transformsfrom tensorboardX import SummaryWriter# 定义神经网络模型 class SimpleCNN(nn.Module):def __init__(self):…...
linux查看目录下的文件夹命令,find 查找某个目录,但是不包括这个目录本身?
linux查看目录下的文件夹命令,find 查找某个目录,但是不包括这个目录本身? Linux中查看目录下的文件夹的命令是使用ls命令。ls命令用于列出指定目录中的文件和文件夹。通过不同的选项可以实现显示详细信息、按照不同的排序方式以及使用不同的…...
单一设备上的 2 级自动驾驶:深入探究 Openpilot 的奥秘
Level 2 Autonomous Driving on a Single Device: Diving into the Devils of Openpilot 单一设备上的 2 级自动驾驶:深入探究 Openpilot 的奥秘 Abstract Equipped with a wide span of sensors, predominant autonomous driving solutions are becoming more m…...
向github远程仓库中push,要求使用token登录
Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 如上,当向github远程仓库push时,输入github的用户名和密码出现如上错误,要求使用token登录,此时只需要用户…...
最全windows提权总结(建议收藏)
当以低权用户进去一个陌生的windows机器后,无论是提权还是后续做什么,第一步肯定要尽可能的搜集信息。知己知彼,才百战不殆。 常规信息搜集 systeminfo 查询系统信息hostname 主机名net user 查看用户信息netstat -ano|find "3389&quo…...
Could not find Chrome (ver.xxxxx). This can occur if either\n
文章目录 错误解决方法 错误 Could not find Chrome (ver. 119.0.6045.105). This can occur if either\n 1. you did not perform an installation before running the script (e.g. npx puppeteer browsers install chrome) or\n 2. your cache path is incorrectly configu…...
Conmi的正确答案——ESP32-C3开启安全下载模式
IDF版本:4.4.7 注意事项:一旦烧录“安全下载模式”,模组将无法被读取或清理,只能通过eclipse原项目烧录程序进行重新烧录,无法再烧录其他固件。 20240703110201——追加解法,暂时无法解安全下载模式 &…...
从零开始实现大语言模型(一):概述
1. 前言 大家好,我是何睿智。我现在在做大语言模型相关工作,我用业余时间写一个专栏,给大家讲讲如何从零开始实现大语言模型。 从零开始实现大语言模型是了解其原理及领域大语言模型实现路径的最好方法,没有之一。已有研究证明&…...
科普文本分类背后的数学原理——最新版《数学之美》第14、15章读书笔记
新闻分类,或广义上的文本分类,其核心任务是根据文本内容将相似文本聚合在同一类别中。在新闻领域,这意味着将报道划分为财经、体育、军事等不同主题。人类执行此任务时,通过阅读和理解新闻的主旨来进行归类。然而,作者…...
华为云生态和快速入门
华为云生态 新技术催生新物种,新物种推动新生态 数字技术催生各类运营商去重塑并颠覆各行业的商业模式 从业务层面看,企业始终如一的目标是业务增长和持续盈利,围绕这些目标衍生出提质、增效、降本、安全、创新和合规的业务诉求,…...
卷积神经网络——LeNet——FashionMNIST
目录 一、整体结构二、model.py三、model_train.py四、model_test.py GitHub地址 一、整体结构 二、model.py import torch from torch import nn from torchsummary import summaryclass LeNet(nn.Module):def __init__(self):super(LeNet,self).__init__()self.c1 nn.Conv…...
k8s-第十二节-DaemonSet
DaemonSet是什么? DaemonSet 是一个确保全部或者某些节点上必须运行一个 Pod的工作负载资源(守护进程),当有node(节点)加入集群时, 也会为他们新增一个 Pod。 下面是常用的使用案例: 可以用来部署以下进程的pod 集群守护进程,如Kured、node-problem-detector日志收集…...
Mysql-内置函数
一.什么是函数? 函数是指一段可以直接被另外一段程序调用的程序或代码。 mysql内置了很多的函数,我们只需要调用即可。 二.字符串函数 MySQL中内置了很多字符串函数: 三.根据需求完成以下SQL编写 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全…...
新浪API系列:支付API打造无缝支付体验,畅享便利生活(3)
在当今数字化时代,支付功能已经成为各类应用和平台的必备要素之一。作为开发者,要构建出安全、便捷的支付解决方案,新浪支付API是你不可或缺的利器。新浪支付API提供了全面而强大的接口和功能,帮助开发者轻松实现在线支付的集成和…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
基于 HTTP 的单向流式通信协议SSE详解
SSE(Server-Sent Events)详解 🧠 什么是 SSE? SSE(Server-Sent Events) 是 HTML5 标准中定义的一种通信机制,它允许服务器主动将事件推送给客户端(浏览器)。与传统的 H…...
生信服务器 | 做生信为什么推荐使用Linux服务器?
原文链接:生信服务器 | 做生信为什么推荐使用Linux服务器? 一、 做生信为什么推荐使用服务器? 大家好,我是小杜。在做生信分析的同学,或是将接触学习生信分析的同学,<font style"color:rgb(53, 1…...
创客匠人:如何通过创始人IP打造实现知识变现与IP变现的长效增长?
在流量红利逐渐消退的当下,创始人IP的价值愈发凸显。它不仅能够帮助中小企业及个人创业者突破竞争壁垒,还能成为企业品牌影响力的核心资产。然而,市场上IP孵化机构鱼龙混杂,如何选择一家真正具备长期价值的合作伙伴?创…...
Unity VR/MR开发-开发环境准备
视频讲解链接: 【XR马斯维】UnityVR/MR开发环境准备【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
Java + Spring Boot + Mybatis 插入数据后,获取自增 id 的方法
在 MyBatis 中使用 useGeneratedKeys"true" 获取新插入记录的自增 ID 值,可通过以下步骤实现: 1. 配置 Mapper XML 在插入语句的 <insert> 标签中设置: xml 复制 下载 运行 <insert id"insertUser" para…...

