一、创建一个新的session
1、开始新的session
2、指定平台和设备名称
(1)点击Start Session,提示必填信息:平台和设备
(2)设备名称,通过adb devices命令获取
(3)输入平台和设备名称
3、Android 需要获取 appPackage 和 appActivity
(1)命令行输入命令:
adb logcat|grep -i displayed
(2)在 mumu 模拟器上打开被测软件,例如雪球 App ,再回到命令行中查看新生成的日志即可获取
appPackage:com.xueqiu.android
appActivity:.view.WelcomeActivityAlias
4、 desire_caps
1 { 2 "platformName": "iOS", // android 或iOS 3 "platformVersion": "11.0", // 版本 4 "deviceName": "iPhone 7", // 设备名称 5 "automationName": "XCUITest", // 工作引擎 6 "app": "/path/to/my.app" // Android有包和页面的概念 7 }
二、appium页面功能简介
左:页面展示
中:dom,xml的层级结构,包含布局和标签
右:元素属性
1、选择属性
2、鼠标滑动
3、同步:通过鼠标完成刷新操作,即会同步到手机或模拟器上上
4、返回
5、刷新:对当前页面进行刷新
6、录制脚本
7、搜索:搜索元素,且选中搜索结果会在页面上高亮
8、拷贝:xml的结构
9、关闭
三、录制功能
1、点击 录制 按钮
2、录制第一个脚本:选中操作要素,进行相应点击/文本输入/清空操作,切换语言,复制到 Pycharm 中
(1)点击 搜索 按钮
(2)输入 阿里巴巴
(3)点击 联想结果的第一个
(4)点击 用户
3、Pycharm 中执行录制的脚本
1 # appium第一个录制脚本 2 # "noReset": True 保留之前的操作 3 desired_caps = { 4 "platformName": "android", 5 "deviceName": "127.0.0.1:7555", 6 "appPackage": "com.xueqiu.android", 7 "appActivity": ".view.WelcomeActivityAlias", 8 "noReset": True 9 } 10 # 本机地址0.0.0.0:4723,Appium启动时出现的地址,/wd/hub固定写法 11 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) 12 13 # 隐式等待 14 driver.implicitly_wait(10) 15 16 # 点击搜索 17 el1 = driver.find_element_by_id("com.xueqiu.android:id/tv_search") 18 el1.click() 19 20 # 输入 阿里巴巴 21 el2 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text") 22 el2.send_keys("阿里巴巴") 23 24 # 点击 第一个联想结果 25 el3 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout[1]/android.widget.LinearLayout/android.widget.TextView[1]") 26 el3.click() 27 28 # 点击 用户 页签 29 el4 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout[2]/android.view.View") 30 el4.click()