文章目录
- 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>