Mac电脑,python+appium+安卓模拟器使用步骤

1、第一步,环境搭建,参考这位博主的文章,很齐全
https://blog.csdn.net/qq_44757414/article/details/128142859
我在最后一步安装appium-doctor的时候,提示权限不足,换成sudo appium-doctor即可

2、第二步,安装桌面appium,https://github.com/appium/appium-desktop/releases,下载合适的版本安装即可

3、第三部,安装安卓模拟器,我是M1,找了一圈都没有适配的安卓模拟器,最后在这位博主的文章里找到了合适的,感谢
https://blog.csdn.net/weixin_41677874/article/details/125559161
我遇到一个问题,就是找不到opt目录,这个时候,在终端窗口,将opt目录改成不隐藏即可
sudo chflags nohidden opt

4、第四部,开始运行第一个小程序,启动APP
4.1、需要找到APP的包名和activity名称
首先,把apk文件下载到电脑上
其次,终端窗口,进入apk的目录下执行命令:aapt dump badging rimet_36180121811227.apk
Mac电脑,python+appium+安卓模拟器使用步骤_第1张图片
Mac电脑,python+appium+安卓模拟器使用步骤_第2张图片

4.2、创建一个Python项目

4.3、输入以下代码

# 导入webdriver
from appium import webdriver
# 初始化参数
desired_caps = {
    'platformName': 'Android',  # 被测手机是安卓
    'platformVersion': '11',  # 手机安卓版本
    'deviceName': 'Android emulator',  # 设备名,安卓手机可以随意填写
    'appPackage': 'com.alibaba.android.rimet',  # 启动APP Package名称
    'appActivity': 'com.alibaba.android.rimet.biz.LaunchHomeActivity',  # 启动Activity名称
    'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
    'resetKeyboard': True,  # 执行完程序恢复原来输入法
    'noReset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
    'newCommandTimeout': 6000,
    'automationName': 'UiAutomator2'
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)


# 退出程序,记得之前没敲这段报了一个错误 Error: socket hang up 啥啥啥的忘记了,有兴趣可以try one try
#driver.quit()

4.4、启动appium

4.5、启动安卓模拟器,检查adb自动连接了安卓模拟器
在这里插入图片描述
4.6、此时运行程序,就会看到模拟器中的钉钉启动啦

5、查找APP中的元素
5.1、点击appium桌面工具窗口的搜索符号,会跳转到官方地址
Mac电脑,python+appium+安卓模拟器使用步骤_第3张图片


下载合适的版本

5.2、启动appium inspector,填写信息如下图,基本上和代码里是是一样的
5.3、点击start session,启动如下图,这个时候,就可以看到这个页面里的所有元素信息,可以操作点击、输入等操作
Mac电脑,python+appium+安卓模拟器使用步骤_第4张图片

5.4、也可以启动录制功能,会自动生成代码在recorder区域,这部分代码可以直接粘贴到Python中使用,如果出现元素找不到的情况,可以替换一下查找元素的方式,比如id找不到,换成xpath一般都能找到


6、最后粘贴一段获取小红书榜单文章点赞数、收藏数、评论数的代码

# 导入webdriver
import time
import urllib.request

from appium import webdriver
# 初始化参数
from appium.webdriver.common.appiumby import AppiumBy

desired_caps = {
    "platformName": "Android",
    "platformVersion": "11",
    "deviceName": "Android emulator",
    "appPackage": "com.xingin.xhs",
    "appActivity": "com.xingin.xhs.index.v2.IndexActivityV2",
    'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
    'resetKeyboard': True,  # 执行完程序恢复原来输入法
    'noReset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
    'newCommandTimeout': 6000,
    'automationName': 'UiAutomator2'
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(3)
el1 = driver.find_element(by=AppiumBy.ID, value="com.xingin.xhs:id/fvw")
el1.click()
time.sleep(2)
driver.get_screenshot_as_file("xhs.png")
el2 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[3]/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[1]/android.widget.LinearLayout/android.widget.TextView")
el2.click()
el3 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/androidx.viewpager.widget.ViewPager/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.TextView")
el3.click()
el4 = driver.find_element(by=AppiumBy.ID, value="com.xingin.xhs:id/enl")
dianzan = el4.get_attribute("text")
print(dianzan)
el5 = driver.find_element(by=AppiumBy.ID, value="com.xingin.xhs:id/em7")
shoudang = el5.get_attribute("text")
print(shoudang)
el6 = driver.find_element(by=AppiumBy.ID, value="com.xingin.xhs:id/emd")
pinglun = el6.get_attribute("text")
print(pinglun)


#driver.quit()


运行结果如下:

你可能感兴趣的:(appium,android,macos,python)