Appium+python+android连接

来源:互联网 发布:乔丹最后一个赛季数据 编辑:程序博客网 时间:2024/06/05 15:17

一、环境搭建

1、appium&android

见 Appium安装

注意校验android的依赖环境

2、python安装

二、android真机demo

1、python代码

import os

from selenium import webdriver

import time

PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))

desired_caps = {}

desired_caps['deviceName'] = '850ABL2GGMDD'#设备明,在terminal窗口使用 adb devices命令得到

desired_caps['platformName'] = 'Android'#系统

desired_caps['browserName'] = ''

desired_caps['platformVersion'] = '5.1'#系统版本号

desired_caps['appPackage'] = 'com.sankuai.meituan'

desired_caps['appActivity'] = 'com.meituan.android.tower.reuse.holiday.HolidayNativeHomepageActivity'

driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

注意:package和activity成对使用

package是包名

activity是页面入口象征  查找方法下面介绍

2、执行

假设python代码在存储为firstdemo.py

(1)开一个terminal窗口  输入 appium 启动appium 查看是否启动成功(标志:显示版本和监听),若不成功检查appium安装情况

(2)开一个terminal,进入first.py所在的路径,使用cd命令;然后 python first.py执行python文件

(3)坐等手机跳转到相应页面

然而...

事与愿违...出了bug...

3、问题

我的package和activity对应的是美团app的旅游出行首页

跑了我的程序

结果: 

正常页面是:

(1)分析原因

能跳到该页面说明手机和appium交互成功,说明代码模块的手机参数设置没有问题,只剩下package和activity,又去查了目的地首页的package和activity,无问题。苦恼呀...

(2)对比分析法,有没有planB,测试下,是否结果相同

planB:是有appium client设置参数完成与手机简单交互

appium client

 

打开该软件,点击上面的android小人儿,将标红的填好。怎么填见上面【二】中python代码的相应内容 【 DeviceName在Terminal使用adb devices得到】

然后点击【launch】icon,同时点击上面的放大镜,顺利的话就会看到页面了

waiting...

结果:是正常页面,沮丧...难道我的代码问题

又返回去看了下代码,查了下wiki和百度上的case,没有问题呀,一脸懵...

再试试,结果,【非正常页面】和我程序跑出来的页面一样,真实万般滋味在心头呀,不造为什么...

那姑且再试一次,结果又正常了,难道是非必现bug?【三次结果不一致

冷静下来...仔细观察一下上述两个页面相同part的区别:

右上角没有地点。

问题猜想:定位不准??

【尝试】

开启了定位 将页面调到美团app的首页,用appium client执行,每次都能正常

反向思考,退出美团或者不开定位,则每次失败。

【代码尝试】

开启定位,页面调到美团app首页,现象:

会先退出美团,将美团app杀死,然后进美团旅行首页,结果呢,可想而知,每次都失败页面

(3)结论分析

和导师讨论了一下,初步结论是:美团旅行的二级页面是和美团首页关联的,首页将cityid传给旅行页面,旅行页面得到cityid才能正常显示页面内容

换个美团首页辅助该论点:

desired_caps['appPackage'] = 'com.sankuai.meituan'

 desired_caps['appActivity'] = '.activity.MainActivity'

执行之后,成功调到美团首页,success!

三、补充得到apk的package和activity的方法

方法一:terminal终端运行:adb logcat | grep ActivityManager #打印日志

方法二:

  • 清除logcat内容,使用命令adb logcat -c
  • 启动logcat,使用命令adb logcat ActivityManager:I *:s #打印日志【更精简】

得到日志后使用command+F快捷键搜索:Displayed,后面的内容就是,查到了两条:

com.sankuai.meituan/.startup.StartupActivity

com.sankuai.meituan/.activity.MainActivity

很明显package(包名): com.sankuai.meituan

activity的选择看英文翻译:第一条应该是启动入口,第二条是主入口,选择第二条,页面入口一般选择带有“MainActivity”的路径

原创粉丝点击