[笔记]使用Python+APPIUM实现PC端控制Android手机操作APP
因为个人时间原因,这里暂时先作为笔记记录一些关键地方,可能过程会有遗漏,如果感兴趣可以给我留言,后续完善本篇。
首先基于安装好Python环境和APPIUM的基础上进行操作。
原本所熟知的这套组合大多用来做APP的自动化测试,当然也可以做更多有趣的事情。
python的ide我使用的是pycharm,因为日常都是idea系列,非常顺手。
需要在pycharm的file -setting中找到python interpreter 安装一下Appium-Python-Client
打开Appium,启动服务
file-new session windows
截图是已经是我上次保存的手机及目标APP信息了,第一次使用点左侧TAB填全信息。
这里特别需要注意一点啊,有一个属性会每次运行清除应用数据的,如果用自己的手机跑千万慎重填写,可别跑个微信把微信数据全删了,那就乌龙了。
appActivity这个属性,如果不是自己写的APP 可以运行后用ADB的命令查一下。
开始session 后 可以操作app上面的组件然后将代码保存为python代码后 ,就可以用py脚本跑动作了。
我做了一个打开京东进入自己的关注商品中点开指定序号商品详情的操作。
def jd_test():
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "10.0.0"
caps["deviceName"] = "Mi_8"
caps["appPackage"] = "com.jingdong.app.mall"
caps["appActivity"] = ".main.MainActivity"
caps["resetKeyboard"] = True
caps["unicodeKeyboard"] = True
caps['noReset'] = 'True'
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
print_hi('init driver')
time.sleep(5)
el1 = driver.find_element_by_accessibility_id("我的")
el1.click()
time.sleep(1)
el2 = driver.find_element_by_xpath(
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.view.ViewGroup/android.widget.TextView[1]")
el2.click()
time.sleep(1)
el3 = driver.find_element_by_xpath(
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.ListView/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.TextView[1]")
el3.click()
time.sleep(1)
el4 = driver.find_element_by_id("com.jd.lib.productdetail.feature:id/add_2_car")
el4.click()
time.sleep(1)
print_hi('finish test')
# driver.quit()
经过测试啊,如果React Native写的应用也是可以点击到组件的,不过有些遗憾的是 大片的SVG绘制的组件时,就无法点击想要的指定图形区域的。这点暂未学会怎么操作,学会了再来补充。
感谢阅读至此!