Appium中部分api的使用方法
使用的语言是java,appium的版本是1.3.4,java-client的版本是java-client-2.1.0,建议多参考java-client-2.1.0-javadoc。
1.使用AndroidDriver,其已经继承了AppiumDriver
private AndroidDriver driver; @Before public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "Android Emulator"); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("appPackage", "com.android.settings"); capabilities.setCapability("appActivity", ".Settings"); driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } @After public void tearDown() throws Exception { driver.quit(); }
2.截屏并保存至本地
//截屏并保存至本地 File screen = driver.getScreenshotAs(OutputType.FILE); File screenFile = new File("d:\\screen.png"); try { FileUtils.copyFile(screen, screenFile); //commons-io-2.0.1.jar中的api } catch (IOException e) { e.printStackTrace(); }
3.push文件、pull文件
File file = new File("d:\\test.txt"); //test.txt内容为"test" String content = null; try { content = FileUtils.readFileToString(file); } catch (IOException e) { e.printStackTrace(); } byte[] data = Base64.encodeBase64(content.getBytes()); driver.pushFile("sdcard/test.txt", data); byte[] resultDate = driver.pullFile("sdcard/test.txt"); System.out.println(new String(Base64.decodeBase64(resultDate))); //打印结果为"test"
4.
//获取当前界面的activity,可用于断言是否跳转到预期的activity
driver.currentActivity();
5.
//打开通知栏界面
driver.openNotifications();
6.//获取网络状态
int status = driver.getNetworkConnection().value; System.out.println(status); //设置网络状态 driver.setNetworkConnection(new NetworkConnectionSetting(status)); //或者 driver.setNetworkConnection(new NetworkConnectionSetting(false, true, false));
//启动其他应用,跨APP driver.startActivity("com.android.camera", ".CameraLauncher"); //自动滑动列表 driver.scrollTo("text"); //或者 driver.scrollToExact("text"); //安装APP driver.installApp(appPath); //判断应用是否已安装 driver.isAppInstalled("package name"); //拖动相机图标至日历图标位置 new TouchAction(driver).longPress(driver.findElementByName("相机")) .moveTo(driver.findElementByName("日历")).release().perform(); //锁屏 driver.lockScreen(2); //判断是否锁屏 driver.isLocked();
//发送按键事件
driver.sendKeyEvent(AndroidKeyCode.HOME);
<span style=
"color:#ff0000;"
> </span>
//通过uiautomator定位clickable属性为true的元素并点击
driver.findElementByAndroidUIAutomator(
"new UiSelector().clickable(true)"
).click();
//相同属性的元素使用List存放
List<webelement> elements = driver.findElementsByClassName(
"class name"
);
elements.get(
0
).click();
//点击List中的第一个元素
//tap,点击元素位置
driver.tap(
1
, driver.findElementByName(
"日期和时间"
),
0
);</webelement>
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君

分类:
Appium
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库