一. Adb命令
adb-安卓调试桥,用于完成电脑和手机之间的通信控制
手机中的每个页面都是一个activity
- ①常用的命令:
- adb devices -l:查看连接设备名称deviceName
- adb shell getprop ro.build.version.release:查看版本号platformVersion
- adb devices:查看设备是否连接
- adb push 【电脑上的文件路径】[手机上的文件路径] :将文件从电脑传到手机
- 如:/storage/emulated/0/Download/
- adb pull [手机上的文件路径] 【电脑上的文件路径】:将文件从手机传到电脑
- 如:adb pull /storage/emulated/0/DCIM/Screenshots/111.jpg C:\Users\28449\Downloads
- exit :退出shell
- adb uninstall 安卓系统的包名:删除文件
- adb install apk包路径:安卓apk的包
- adb shell:进入安卓系统,操作安卓,基本linux命令都可以使用
- adb logcat > D:\\1.txt:可以保存日志到txt文件
- 获取应用的activity:
- aapt dump badging “apk的路径 ”:查看包名appPackage&启动页appActivity
- 前置条件:
- 进入“D:\software\IDE\Android\android-sdk\build-tools\29.0.3
- 以上链接修改成自己的
- 并且有sdk
- adb shell dumpsys activity|findstr "mFocuse":获取当前页面的activity
- adb shell monkey -p 【被测包名】 -v -v -v 1:通过日志信息中,找到using开头的那一句,其中的activity就是穷页面
- ②包管理(pm)命令:
- adb shell pm list package -3:查看第三方安卓的包名,列表形式,-3第三方参数
二、基本Linux命令
- cd:进入文件目录
- ls:查看文件列表
- cat:查看文件内容
- rm:删除文件
- pm list package -3:查看第三方安卓的包名,列表形式,-3第三方参数
三、基本操作
捕捉元素
1. XPATH
2. CLASS_NAME
3.ACCESSIBILITY_ID
driver.find_element(AppiumBy.CLASS_NAME,'android.widget.CheckBox').click() driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[@resource-id="com.runcam.android.runcambf:id/AgreeBtn"]').click() driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'My').click()
时间等待
1. 显式等待:from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from appium.webdriver.common.appiumby import AppiumBy try: # 等待元素出现 element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((AppiumBy.XPATH, '//XCUIElementTypeImage[@name="我的"]')) ) element.click() except Exception as e: print("Element was not found within the given time.") print(e)
2. 强制等待:time.sleep(2)滑动
通过xy轴进行滑动:
driver.swipe(start_x=214, start_y=500, end_x=214, end_y=300,duration=100)获取屏幕尺寸并进行点击
size=get_screen_ratio(driver)
x=int(size['width']*0.4033)
y=int(size['height']*0.9029)
driver.tap([(x, y)],None)
四、遇到的问题
1. AttributeError: ‘NoneType‘ object has no attribute ‘to_capabilities‘
![](https://i-blog.csdnimg.cn/direct/caf1ec3c38334d538c852be3ea443c42.png)
卸载selenium和appium, pip uninstall selenium, appium-python-client,
降低指定appium版本进行安装:pip install appium-python-client==2.0
2. 运行无输出信息,运行完成才产生
需要使用main方法调用unittest
if __name__ == '__main__': report(RECEIVERPAGE)
3. unittest无法运行main:
五、框架 &代码
1 Desired Capabilities默认设置
desired_caps = {
"platformName": "Android",
"appium:platformVersion": "14",
"appium:deviceName": "V2055A",
"appium:appPackage": "com.runcam.android.runcambf",
"appium:appActivity": "com.runcam.android.runcambf.SplashActivity",
"appium:resetKeyboard": True,
"appium:ignoreHiddenApiPolicyError": True,
"appium:ensureWebviewsHavePages": True,
"appium:nativeWebScreenshot": True,
"appium:newCommandTimeout": 3600,
"appium:connectHardwareKeyboard": True
}