appium(2)简单的demo、元素定位

appium-录制用例

获取包名和activity

windows系统
adb shell dumpsys activity |find “mFocusedActivity” 获取当前activity

C:\Users\Administrator>adb shell dumpsys activity |find "mFocusedActivity"
  mFocusedActivity: ActivityRecord{
   10828b7 u0 com.xueqiu.android/.common.MainActivity t11}

adb shell dumpsys window | findstr mCurrentFocus 获取当前activity

C:\Users\Administrator>adb shell dumpsys window | findstr mCurrentFocus
  mCurrentFocus=Window{
   26c290 u0 com.xueqiu.android/com.xueqiu.android.common.MainActivity}

录制步骤

(1)启动appium客户端,默认启动地址 http://127.0.0.1:4723/wd/hub

在这里插入图片描述

(2)file>New Session Window

在这里插入图片描述

(3)配置设备信息、包名等,点【Start Session】

{
“platformName”: “android”,
“deviceName”: “Huawei Mate30”,
“appPackage”: “com.xueqiu.android”,
“appActivity”: “.view.WelcomeActivityAlias”,
“noReset”: “True”
}
在这里插入图片描述

(4)录制脚本

  • 点【录制】
  • 点【选择元素】
  • 选择元素:点左边的输入框
  • 点右边的【Tap】即点击输入框操作
  • 选择元素:点坐标的输入框
  • 点右边的【Send Keys】,输入文本,即向左边的输入框输入搜索关键词
  • Recoder选择【Python】语言
  • 结束【录制】
  • 复制录制脚本
    在这里插入图片描述
    动图
    在这里插入图片描述

代码


# pip install appium-python-client
from appium import webdriver
import time
descrip_cap = {
   
    "platformName": "android",
    "deviceName": "Huawei Mate30",
    "appPackage": "com.xueqiu.android",
    "appActivity": ".view.WelcomeActivityAlias",
    "noReset": "True"
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",descrip_cap)
driver.implicitly_wait(10)
#####################复制录制的脚本#############################
el1 = driver.find_element_by_id("com.xueqiu.android:id/tv_search")
el1.click()
el2 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text")
el2.send_keys("alibaba")
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]")
el3.click()
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/androidx.viewpager.widget.ViewPager/android.widget.RelativeLayout/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout[1]/android.widget.RelativeLayout/android.widget.LinearLayout[1]/android.widget.TextView")
el4.click()
#####################复制录制的脚本#############################
time.sleep(5)
driver.quit()

运行效果:
在这里插入图片描述

报错

An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command 'D\:\\adt-bundle-windows-x86_64-20140702\\sdk\\platform-tools\\adb.exe -P 5037 -s d270ac3a shell pm clear com.xueqiu.android' exited with code 255'; Stderr: 'Security exception: PID 26038 does not have permission android.permission.CLEAR_APP_USER_DATA to clear data of package com.xueqiu.android    java.lang.SecurityException: PID 26038 does not have permission android.permission.CLEAR_APP_USER_DATA to clear data of package com.xueqiu.android  at com.android.server.am.ActivityManagerService.clearApplicationUserData(ActivityManagerService.java:7695)  at com.android.server.pm.PackageManagerShellCommand.runClear(PackageManagerShellCommand.java:1632)  at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:204)  at android.os.ShellCommand.exec(ShellCommand.java:103)  at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:24667)  at android.os.Binder.shellCommand(Binder.java:634)  at android.os.Binder.onTransact(Binder.java:532)  at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:3152)  at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:4970)  at android.os.Binder.execTransact(Binder.java:731)'; Code: '255'

Security exception: PID 26038 does not have permission android.permission.CLEAR_APP_USER_DATA to clear data of package com.xueqiu.android
原因:
安卓手机未开启OEM解锁
解决:
设置>开发者选项>OEM解锁,改为开启

在这里插入图片描述

Capability设置

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

Capability Description Values
automationName automation引擎 Appium (default), or UiAutomator2, Espresso, or UiAutomator1 for Android, or XCUITest or Instruments for iOS, or YouiEngine for application built with You.i Engine
app app地址 /abs/path/to/my.apk or http://myapp.com/app.ipa
platformName 手机使用的操作系统 iOS, Android, or FirefoxOS
platformVersion 操作系统版本 e.g., 7.1, 4.4
deviceName 设备名称 iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android Emulator, Galaxy S4
udid 设备唯一标识符 e.g. 1ae203187fc012g
noReset 不重置app状态 true, false
fullReset 重置app true, false
dontStopAppOnReset 在使用adb启动应用程序之前,不会停止测试应用程序的进程。如果被测试的应用程序是由另一个锚应用程序创建的,设置为false,则允许锚应用程序的进程在使用adb启动测试应用程序期间仍然是活动的。换句话说,当dontStopAppOnReset设置为true时,我们将不会在adb shell am start调用中包含-S标志。省略此功能或将其设置为false后,我们将包含-S标志。默认false true, false
newCommandTimeout 在假定客户机退出并结束会话之前,Appium等待来客户机新命令的时间(以秒为单位) e.g 60单位秒
appActivity【安卓】 启动的Android活动(页面)的活动(页面)名 MainActivity, .Settings
appPackage【安卓】 apk包名 com.example.android.myApp, com.android.settings
dontStopAppOnReset【安卓】 在adb启动应用程序之前,不会停止测试应用程序的进程 true or false
skipDeviceInitialization【安卓】 跳过设备初始化,包括.安装和运行设置应用程序或设置权限。可用于提高启动性能 true or false
unicodeKeyboard【安卓】 支持Unicode 输入, 默认为false;切换非英文输入 true or false
resetKeyboard【安卓】 将键盘重置为其原始状态为false true or false
autoGrantPermissions【安卓】 在安装时自动授权app所需要的权限,默认为fasle。如果noReset为 true,此配置不生效。 true or false
skipDeviceInitialization【安卓】 跳过设备初始化,包括安装和运行设置应用程序或设置权限。可用于提高启动性能,设备已用于自动化,并为下一次自动化做好准备。默认为false true or false
skipUnlock【安卓】 在会话创建期间跳过解锁。默认值为false true or false
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值