赞
踩
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
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桌面工具窗口的搜索符号,会跳转到官方地址
下载合适的版本
5.2、启动appium inspector,填写信息如下图,基本上和代码里是是一样的
5.3、点击start session,启动如下图,这个时候,就可以看到这个页面里的所有元素信息,可以操作点击、输入等操作
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()
运行结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。