java自动化测试-UI(APP)

2023-11-13

环境搭建

下载android-sdk-windows-appium与Appium-windows。
夜神模拟器/雷电模拟器/genymotion…

下载

android-sdk安装与配置

解压android-sdk压缩包
双击SDK Manager.exe打开,默认选择->install即可,静静的等待安装。
这里如果不知道要装什么就全选,全部安装总没错,后期再安装也是可以的哦。

默认的选择
Tools
在这里插入图片描述
Android R
在这里插入图片描述
Android 10(最新的版本)
在这里插入图片描述
Extras
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置环境变量

新建一个系统环境变量,变量名为ANDROID_HOME,变量值为SDK安装路径。
这里注意变量名必须是ANDROID_HOME,别的地方好像需要
在这里插入图片描述
然后就是在系统的Path变量后,新建

#29.0.3要对应下载的版本
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\build-tools\29.0.3
%ANDROID_HOME%\tools

在这里插入图片描述
检验是否安装成功 打开cmd(一定要重新打开)

adb version

在这里插入图片描述

Appium

双击Appium的exe文件安装。
仅为当前用户安装,因为没有选择安装路径的地方,安装后需要知道安装的路径。
默认安装路径:C:\Users\wwxb\AppData\Local\Programs\Appium
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

夜神模拟器安装与配置

自定义安装,选择安装路径,也可以是默认路径,傻瓜式安装。
雷电模拟器安装也是一样,模拟器安装一个就可以。

夜神模拟器,配置模拟器连接:

  • 从Android SDK的platform-tools找到adb.exe程序,复制替换到夜神的安装目录下
  • 把夜神安装目录下的nox_adb.exe给删掉,刚才复制替换过来的adb.exe重新复制一份,改名nox_adb.exe即可
  • 配置完之后就会自动的连接上夜神模拟器

配置元素定位检查器

Ui Automator Viewer(推荐使用)

在Android sdk 的tools或者\tools\bin目录下,我的是在tools目录下双击uiautomatorviewer.bat运行
能自动同步到APP页面
在这里插入图片描述

appium(需要进行配置,不推荐使用)

首次启动appium可以设置为中文,appuim启动页面View->Language->中文

appium检查器配置前获取参数信息

被测app配置需要配置设备名、平台名(Android或IOS)、APP名(包名)、APP启动入口;需要先获取这3个设备名、APP名、APP启动入口
获取设备名(需要启动模拟器),在cmd命令行输入以下命令

adb devices

在这里插入图片描述
获取包名与APP启动入口程序(在控制台输入以下命令后在模拟器中启动被测APP),这里已bilibili为例

adb logcat | findstr "START"	#Windows 系统
#adb logcat | find "START"	#Windows 系统
#adb logcat | grep "START"	#mac 系统
#会出现很多日志需要找到cmp位置
#在cmp=tv.danmaku.bili/.ui.splash.SplashActivity中tv.danmaku.bili为包名,.ui.splash.SplashActivity为入口程序(注意前面有个点)

在这里插入图片描述
问题1:adb devices不显示设备名

  • 检查appium以及模拟器是否已经启动
  • 检查appium以及模拟器已经启动还是不显示,关闭模拟器,在任务管理器中结束acb.exe进程后重启模拟器
    问题2:找不到包名和入口程序
  • 在模拟器中检查被测APP是否启动

appium检测器配置

在这里插入图片描述

配置号以后点击另存为
在这里插入图片描述

这里名称随意,一般见名知意,Save(保存)
在这里插入图片描述

启动会话,首次会慢一些
在这里插入图片描述
下次启动就可以在这里选择,不需要进行配置了
在这里插入图片描述
启动后
在这里插入图片描述
像选择元素操作,可以查看属性用于元素定位
在这里插入图片描述

APP元素定位

待更新。。。

脚本编写

新建项目

pom.xml添加依赖包
依赖包查找网址https://mvnrepository.com/

<!-- https://mvnrepository.com/artifact/io.appium/java-client -->
<dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>7.0.0</version>
</dependency>

第一个测试类

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidKeyCode;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;


/**
 * 开发人员: 旺旺掀被
 * 时间: 2022-04-22 03:57
 * 描述:
 */

public class TestDemo {
    public static void main(String[] args) throws MalformedURLException, InterruptedException {
        /*
        通过Appium编写脚本
        实现bilibili(B站)App登录->搜索【柠檬班软件测试】->点关注
        没有账号登录省略
         */
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName", "127.0.0.1:62001");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("appPackage", "tv.danmaku.bili");
        capabilities.setCapability("appActivity", ".ui.splash.SplashActivity");

        //告诉Appium服务参数配置
        //第一个参数:通讯地址
        //第二个参数:参数配置
        URL url = new URL("http://127.0.0.1:4723/wd/hub");

        AndroidDriver driver = new AndroidDriver(url, capabilities);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        //点掉同意并继续按钮
        driver.findElement(By.id("tv.danmaku.bili:id/agree")).click();
        //输入框
        driver.findElement(By.id("tv.danmaku.bili:id/expand_search")).click();
        driver.findElement(By.id("tv.danmaku.bili:id/search_src_text")).sendKeys("柠檬班软件测试");
        //输入完不能点击,只能回车
        driver.pressKeyCode(AndroidKeyCode.ENTER);
        driver.findElement(By.id("tv.danmaku.bili:id/upuser")).click();
        //点击关注
        driver.findElement(By.id("tv.danmaku.bili:id/follow")).click();
        //关闭app,打开Ui Automator Viewer时不报错,报错时手工将adb进程结束掉
        Thread.sleep(5000);
        driver.quit();

    }

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java自动化测试-UI(APP) 的相关文章

随机推荐

  • [人工智能-数学基础-1]:深度学习中的数学地图:计算机、数学、数值计算、数值分析、数值计算、微分、积分、概率、统计.....

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 119710145 目录 1 为
  • java基础面试题系列(101-112)[完结撒花]

    20200718 by 1z 请说明sleep 和 wait 有什么区别 1 sleep 是Thread的成员方法而Wait 是Object的成员方法 2 sleep 没有释放锁 因此在sleep结束后依旧是原线程执行 而wait 释放了锁
  • pytorch(11)-- crnn 车牌端到端识别

    车牌图片端到端识别 一 前言 二 数据集处理 三 crnn模型文件 四 训练验证代码 五 测试代码 六 代码搬自 一 前言 本文主要记录了使用crnn 对车牌图片做端到端识别 即不用对车牌字符做逐个字符分割识别 车牌第一个字符为汉字 共有3
  • JS的map()方法会改变原始数组吗?

    map 为操作数组的一种方法 官方文档显示 map 方法返回一个新数组 数组中的元素为原始数组元素调用函数处理后的值 map 方法按照原始数组元素顺序依次处理元素 注意 map 不会对空数组进行检测 注意 map 不会改变原始数组 但是我在
  • kali 更新无法引导启动Windows11的解决办法

    摘要 出现的问题描述 更新kali之后 在你的Grub2引导中 没有Windows11的选项 但是通EFI引导是能正常启动系统的 保证Windows11的默认引导项是没有损坏 一 验证操作系统引导项 1 ls 在开机后的Grub引导页面 按
  • Unity 的 mathf.lerp

    Unity 的mathf lerp float a float b float t 是线性插值函数 a b的顺序很重要 如果a 10 b 0 则说明是从10到0的变化 如果是a 0 b 10 则说明是从0向10的变化 t的范围在0 1之间
  • Tomcat 8安装

    https www linuxidc com Linux 2017 10 147773 htm 前提 必须正确安装JDK 一 通过二进制包 tar gz 安装 下载 https mirrors tuna tsinghua edu cn ap
  • 分布式数据库需要考虑的(BigTable VS Dynamo)

    分布式数据库需要考虑的 BigTable VS Dynamo 在设计 评价分布式数据库的时候需要考虑一些最基本的特性 我想这些特性可能包括 1 存储系统 一种是类似BigTable将存储交给GFS去做 GFS会保证写入数据的完整 另外一种是
  • 应用多元统计分析(题解)

    题目 应用多元统计分析 北京大学出版社 第四章 回归分析 习题4 3 具体题目见下图 第一小问解答
  • Halcon深度学习常见问题及解决方法

    一 常见问题及解决办法 1 set dl model param DLModelHandle gpu GpuId GpuId 0 选中第一块显卡做深度学习训练 GpuId 1 选中第二块显卡做深度学习训练 类推 查询可用多显卡信息 quer
  • 使用EasyExce实现Excel文件解析

    hello 你好呀 我是灰小猿 一个超会写bug的程序猿 在上一篇文章中我和大家简单的介绍了使用easyexcel技术在有对象和无对象情况下实现Excel文件的写入操作 那么今天这一篇文章 我就继续来和大家讲一下 使用easyexcel技术
  • 入门力扣自学笔记211 C++ (题目编号:1781)

    1781 所有子字符串美丽值之和 题目 一个字符串的 美丽值 定义为 出现频率最高字符与出现频率最低字符的出现次数之差 比方说 abaacc 的美丽值为 3 1 2 给你一个字符串 s 请你返回它所有子字符串的 美丽值 之和 示例 1 输入
  • Football数据集可视化处理——gephi可视化处理数据

    1 football数据集的文件格式 根据如图所示football数据集和的文件格式如下所示 下图表示football数据集节点部分信息 下图表示football数据集边的部分信息 根据上述两个图中的格式对football数据集的格式介绍可
  • 浅谈Spring框架应用的设计模式(一)——工厂模式

    文章目录 前言 一 工厂模式介绍 1 简单工厂模式 1 静态工厂模式 2 利用反射机制实现的简单工厂 2 工厂方法模式 3 抽象工厂模式 二 Spring框架中工厂模式的重要应用 1 BeanFactory 2 FactoryBean 总结
  • Java——多线程使用详解

    多线程 多线程就是同时执行多个应用程序 需要硬件的支持 同时执行 不是某个时间段同时 cpu切换的比较快 所有用户会感觉是在同时运行 并发与并行 并行 parallel 指在同一时刻 有多条指令在多个处理器上同时执行 并行必须借助于多核cp
  • esp32与python-opencv的联动(micropython固件)

    开发环境 Thonny python 硬件要求 esp32cam 实现思路 将esp32cam拍摄的图片通过网络协议传到电脑进行处理 下位机代码 import camera import socket import network impo
  • 去掉图片黑背景输出为透明png(算法和工具)

    有时候你得到的图片不是透明的png而是加了黑背景的图 可能是 jpg gif png等格式的图 例如一个粒子效果的图 多好的粒子效果 可惜它有黑背景 不处理一下 不好用 经过移除黑背景处理为png后 变为 这时候这个效果图片就可以方便的使用
  • 将指定文件夹中的图片随机均匀分为5份,并将每份图片保存到指定的文件夹

    以下是Python示例代码 可用于将指定文件夹中的图片随机均匀分为5份 并将每份图片保存到指定的文件夹 import os import random import shutil 设置来源文件夹和目标文件夹的路径 src folder pa
  • Ubuntu16_18建立返回桌面、显示桌面的快捷图标的特殊方法

    一般windows系统任务栏上都有 返回桌面 的按钮 Ubuntu也有类似的任务栏 或者叫启动器 但是没有这个 显示桌面 的按钮 如果想加一个怎么实现呢 有人可能说了按ctrl super d就可以了 是的没错 不过这是按键不是快捷图标 有
  • java自动化测试-UI(APP)

    环境搭建 下载android sdk windows appium与Appium windows 夜神模拟器 雷电模拟器 genymotion 下载 android sdk下载 官网地址 https developer android go