APP的UI自动化demo(appium+java)

文章目录

    • appium连接手机
    • java代码实现-第一版
    • 第二版-接入testng和隐式等待显示等待

appium连接手机

准备工作
1、查看连接手机模拟器是否连接成功,获取设备名称
执行命令:adb devices

2、查看android内核版本号—>paltformVersion
执行命令:adb shell getprop ro.build.version.release

3、模拟器上打开要测试的app,查看包名和活动名
adb shell dumpsys window |grep mCurrentFocus

在这里插入图片描述

打开并启动appium
之前出现过appium连接不上手机模拟器,在修改配置中JAVA_HOME和ANDROID_HOME填写下正确的路径后可以了
在这里插入图片描述

在这里插入图片描述
点击打开连接配置页面
在这里插入图片描述

填写并保存后点击【start Session】

{"platformName": "Android","platformVersion": "11","deviceName": "emulator-5554","appPackage": "com.wandoujia.phoenix2","appActivity": "com.pp.assistant.activity.PPMainActivity"
}

在这里插入图片描述
连接后页面
在这里插入图片描述

java代码实现-第一版

pom

 <dependency><groupId>io.appium</groupId><artifactId>java-client</artifactId><version>9.1.0</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-remote-driver</artifactId><version>4.9.1</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-api</artifactId><version>4.9.0</version></dependency>

查找比较新的jar地址
阿里云maven仓库
在这里插入图片描述

import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.nativekey.AndroidKey;
import io.appium.java_client.android.nativekey.KeyEvent;
import java.net.URL;public class AppTest {public static void main(String[] args) throws Exception {AndroidDriver driver = null;DesiredCapabilities cap = new DesiredCapabilities();cap.setCapability("platformName", "Android");cap.setCapability("platformVersion", "11");cap.setCapability("deviceName", "emulator-5554");cap.setCapability("appPackage", "com.wandoujia.phoenix2");cap.setCapability("appActivity", "com.pp.assistant.activity.PPMainActivity");cap.setCapability("unicodeKeyboard", "true");cap.setCapability("resetKeyboard", "true");cap.setCapability("noSign", "true");driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);Thread.sleep(5000);//点击【同意】driver.findElement(By.id("com.wandoujia.phoenix2:id/n8")).click();Thread.sleep(2000);//点击系统的返回driver.pressKey(new KeyEvent(AndroidKey.BACK));Thread.sleep(5000);driver.quit();}
}

在这里插入图片描述

第二版-接入testng和隐式等待显示等待

import io.appium.java_client.android.nativekey.AndroidKey;
import io.appium.java_client.android.nativekey.KeyEvent;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import io.appium.java_client.android.AndroidDriver;import org.openqa.selenium.remote.DesiredCapabilities;import org.openqa.selenium.support.ui.ExpectedConditions;import org.openqa.selenium.*;import java.net.MalformedURLException;
import java.net.URL;
import java.time.Duration;public class AppTest {AndroidDriver driver;@BeforeClasspublic void setUp() throws MalformedURLException, InterruptedException {DesiredCapabilities cap = new DesiredCapabilities();cap.setCapability("platformName", "Android");cap.setCapability("platformVersion", "11");cap.setCapability("deviceName", "emulator-5554");cap.setCapability("appPackage", "com.wandoujia.phoenix2");cap.setCapability("appActivity", "com.pp.assistant.activity.PPMainActivity");cap.setCapability("unicodeKeyboard", "true");cap.setCapability("resetKeyboard", "true");cap.setCapability("noSign", "true");driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);//隐式等待driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));}@Testpublic void testNew() {//显示等待WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10), Duration.ofSeconds(1));WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("com.wandoujia.phoenix2:id/n8")));element.click();driver.pressKey(new KeyEvent(AndroidKey.BACK));}@AfterClasspublic void tearDown() {driver.quit();}}

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>app_ui</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>18</maven.compiler.source><maven.compiler.target>18</maven.compiler.target></properties><dependencies><dependency><groupId>io.appium</groupId><artifactId>java-client</artifactId><version>9.1.0</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-remote-driver</artifactId><version>4.9.1</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-api</artifactId><version>4.9.0</version></dependency><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>7.4.0</version> <!-- 这里使用最新版本的 TestNG --><scope>test</scope></dependency></dependencies><build><plugins><!-- Maven Surefire 插件,用于运行 TestNG 测试 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M5</version> <!-- 这里使用最新版本的 Maven Surefire 插件 --><configuration><suiteXmlFiles><!-- 指定 TestNG 测试套件 XML 文件 --><suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile></suiteXmlFiles></configuration></plugin></plugins></build></project>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485397.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件包含+文件上传漏洞(图片马绕过)

目录 一.文件包含二.文件上传三.图片马四.题目 一.文件包含 将已有的代码以文件形式包含到某个指定的代码中&#xff0c;从而使用其中的代码或者数据&#xff0c;一般是为了方便直接调用所需文件&#xff0c;文件包含的存在使得开发变得更加灵活和方便&#xff08;若对用户输入…

使用 JMeter 生成测试数据对 MySQL 进行压力测试

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

原型模式(Prototype Pattern) C++

上一节&#xff1a;建造者模式&#xff08;Builder Pattern&#xff09;C 文章目录 0.理论1.原型模式的核心组成&#xff1a;2.实现方法3.什么时候使用 1.实践步骤 1: 定义怪物原型步骤 2: 实现具体怪物原型步骤 3: 使用原型创建怪物 0.理论 原型模式&#xff08;Prototype P…

springmvc+ssm+springboot房屋中介服务平台的设计与实现 i174z

本论文拟采用计算机技术设计并开发的房屋中介服务平台&#xff0c;主要是为用户提供服务。使得用户可以在系统上查看房屋出租、房屋出售、房屋求购、房屋求租&#xff0c;管理员对信息进行统一管理&#xff0c;与此同时可以筛选出符合的信息&#xff0c;给笔者提供更符合实际的…

数字孪生城市为何备受追捧?其应用场景有多宽?

数字孪生的“虚拟副本”让城市治理不再盲人摸象。 从城市治理的角度来看&#xff0c;数字孪生城市相当于真实世界的“操作系统”&#xff0c;有了它就可以远程对城市的每一个角落进行监测、智慧调度&#xff0c;无论是街道、社区&#xff0c;还是商场、变电站乃至城市排水系统…

文献速递:GAN医学影像合成--基于生成对抗网络的肺部图像分类的多域医学图像翻译生成

文献速递&#xff1a;GAN医学影像合成–基于生成对抗网络的肺部图像分类的多域医学图像翻译生成 01 文献速递介绍 在2019年底&#xff0c;一种称为2019冠状病毒病&#xff08;COVID-19&#xff09;的新型冠状病毒肺炎出现&#xff0c;迅速成为全球性大流行。感染COVID-19可以…

链表头部插入一个节点

运行情况&#xff1a; //头部插入一个节点 #include <stdlib.h> #include <stdio.h> struct Node {int data;struct Node* next; //这是指向Node的指针&#xff0c;将存储下一个Node的地址 //C语言&#xff1a;struct Node* next; //C&#xff1a; Node* next; }…

【开源】JAVA+Vue.js实现考研专业课程管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…

[HTML]Web前端开发技术27(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;佬佬会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

opencv判断灰化情况

目的 先说说理论&#xff1a; 在图像处理中&#xff0c;用RGB三个分量&#xff08;R&#xff1a;Red&#xff0c;G&#xff1a;Green&#xff0c;B&#xff1a;Blue&#xff09;&#xff0c;即红、绿、蓝三原色来表示真彩色&#xff0c;R分量&#xff0c;G分量&#xff0c;B分…

ESP8266智能家居(1)——开发环境的搭建

1.前期介绍 本次打算使用esp8266的开发板——NodeMCU&#xff0c;进行物联网相关项目的学习。开发环境使用Arduino软件。 NodeMCU实物图为&#xff1a; 开发环境截图为&#xff1a; 2.软件下载 我使用的arduino版本为1.8.5&#xff0c;其安装包如下&#xff1a; 【免费】ar…

【FPGA】高云FPGA之数字钟实验->HC595驱动数码管

高云FPGA之IP核的使用 1、设计定义2、设计输入2.1 数码管译码显示2.2 74HC595驱动2.3 主模块设计 3、分析和综合4、功能仿真6.1 hex8模块仿真6.2 HC595模块 5、布局布线6、时序仿真7、IO分配以及配置文件&#xff08;bit流文件&#xff09;的生成8、配置&#xff08;烧录&#…