[笔记]使用Python+APPIUM实现PC端控制Android手机操作APP(自动化测试)

[笔记]使用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绘制的组件时,就无法点击想要的指定图形区域的。这点暂未学会怎么操作,学会了再来补充。

感谢阅读至此!

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值