appium框架介绍-原理、adb命令、appium Inspector工具、appium基础操作

📅 2026/8/27 13:23:48
appium框架介绍-原理、adb命令、appium Inspector工具、appium基础操作
appium介绍appium特点开源支持持Native App(全部android sdk的java代码生成原生) 、Web App都是由HTML5生成的、Hybird APP既有native app也有H5的页面混合app支持andorid和IOS支持跨平台、支持windows、linux、macos支持多语言 java、js、python、C#、rubyappium原理三层架构测试脚本层appium服务器层手机/模拟器层上面的app【脚本层】–通过pythonjava也可编写测试脚本运行代码下发到【Appium 服务器层】整个架构的“大脑”和“调度中心”然后通过adb命令手机数据线连接操作你的【手机或者模拟器上面的app】进行测试appium客户端-服务器架构通过HTTP协议进行通信测试时需要开启appium服务器adb命令如获取设备、系统版本adb shell getprop ro.build.version.releaseapp包名、页面名等使用appium Inspector获取app的元素定位–工具第一步创建会话第二步可查看元素定位信息统一的API支持Android和iOS进行跨平台支持appium需要安装的工具java jdk 安装以及环境变量设置androidSDK依赖javaJDK验证java -versionandroid sdk 安装和环境变量设置下载安装包然后解压放到全英文目录下环境变量的配置①tools目录基础工具集合包括UI自动化测试的工具配置环境变量②platform-tools目录adb工具合计连接手机下发adb命令配置③builds-tools目录aapt的工具也可安装apk包工具验证cmd命令行输入adbaaptandroid -h等命令appium服务器①下载安装包安装建议在C盘②使用命令安装 npm install -g appium③验证appiumappium客户端pip install Appium-Python-Clientpip show Appium-Python-Clientappium基础操作创建driver启动appdriver.start_activity(“包名”,“页面名”)获取当前包名和页面名关闭app、安装、卸载、退出驱动、判断是否安装、置于后台运行fromappiumimportwebdriverimporttime# 参数字典des_cap{platformName:android,#表示系统是android还是iosplatformVersion:9,#表示平台系统版本号deviceName:****,#表示设备id名称一个用四个*表示appPackage:com.android.settings,#app包名appActivity:.Settings,#app界面名noReset:True,#不重置测试数据如登陆后第二次运行直接进入页面resetkeyboard:True,#重置设备的输入键盘unicodeKeyboard:True#采用unicode编码格式输入}#创建驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,des_cap)driver.close_app()#关闭当前apptime.sleep(3)#启动appdriver.start_activity(com.yuandianhulian.yuandianSceneNew,io.dcloud.PandoraEntryActivity)#获取当前包名和页面名print(driver.current_activity)print(driver.current_package)driver.close_app()#关闭appdriver.remove_app(com.yuandianhulian.yuandianSceneNew)#卸载driver.install_app(rD:\BaiduNetdiskDownload\安装包\test.apk)#安装apkdriver.is_app_installed(com.yuandianhulian.yuandianSceneNew)#这个app是否安装返回True或Falsedriver.background_app(5)#后台运行5秒time.sleep(3)driver.quit()#退出驱动appium-元素定位通过元素的xpath、class_name、resource-id等定位具体见代码#定位元素通过XPATHelementdriver.find_element_by_xpath(//*[text更多])# 定位元素classname、resouceIdelementdriver.find_element_by_class_name()elementdriver.find_element_by_id()appium-元素操作元素的操作element.click()、element.clear()、element.send_keys(elementdriver.find_element_by_xpath(//*[text更多])element.click()#点击更多elementdriver.find_element_by_xpath(//*[text请输入账号])element.clear()element.send_keys(admin)appium-获取元素的信息获取元素的text、属性的属性值、大小、位置等信息用于断言判断fromappiumimportwebdriverimporttime des_cap{platformName:android,#表示系统是android还是iosplatformVersion:9,#表示平台系统版本号deviceName:****,#表示设备id名称一个用四个*表示appPackage:com.android.settings,#app包名appActivity:.Settings,#app界面名noReset:True,# 用来记住app的session如果有登陆或做过初始化的操作为True时后面不需要再操作resetkeyboard:True,# 重置设备的输入键盘unicodeKeyboard:True# 采用unicode编码格式输入}driverwebdriver.Remote(http://localhost:4723/wd/hub,des_cap)#系统设置中找到元素电池elementdriver.find_element_by_xpath(//*[text电池])print(element.text)#取的是元素text属性的内容print(element.location)#元素的位置print(element.size)#元素的大小print(element.get_attribute(text))#元素的属性time.sleep(3)driver.quit()appium-其他方法和属性获取手机分辨率driver.get_window_size()获取手机位置driver.get_window_position()获取手机截图driver.get_screenshot_as_file(filename)获取和设置手机网络driver.network_connection,driver.set_network_connection();打开手机通知driver.open_notifications()模拟手机键盘操作driver.press_keycode()fromappiumimportwebdriverimporttime des_cap{platformName:android,#表示系统是android还是iosplatformVersion:9,#表示平台系统版本号deviceName:****,#表示设备id名称一个用四个*表示appPackage:com.android.settings,#app包名appActivity:.Settings,#app界面名noReset:True,# 用来记住app的session如果有登陆或做过初始化的操作为True时后面不需要再操作resetkeyboard:True,# 重置设备的输入键盘unicodeKeyboard:True# 采用unicode编码格式输入}driverwebdriver.Remote(http://localhost:4723/wd/hub,des_cap)print(driver.get_window_size())#获取手机分辨率print(driver.get_window_position())#获取手机位置driver.get_screenshot_as_file(img/1.png)#截图print(driver.network_connection)#获取手机网络driver.set_network_connection(2)#设置网络具体可参考源方法time.sleep(1)driver.open_notifications()#打开手机通知driver.press_keycode(3)#设置键盘操作3home键、4返回键 66回车键time.sleep(3)driver.quit()