首页 > 技术文章 > Appium_第2堂课程笔记

zhang-ping1205 2021-03-30 22:54 原文

1、主要目的:

  -上手 appium 工具使用

  -appium 思想执行流程

  -appium 调试技巧:app 太不稳定了

  -非常核心基础:元素定位

2、安装 app 自动化测试的环境

  - appium 服务: 相当于 selenium 的 webdriver, 最新的,最稳定的。

  - Appium-Python-Client : 相当于 pip install selenium

caps信息:

http://appium.io/docs/en/writing-running-appium/caps/

#appium首页进入

  1、[Appium] Welcome to Appium v1.13.0

# appium连接成功

  [Appium] Appium REST http interface listener started on 0.0.0.0:4723

日志信息:http的请求方式 #请求方式:post 域名:/wd/hub/session

  2、[HTTP] --> POST /wd/hub/session

日志记录信息:

  # 链接的设备信息;版本号 设备名称;端口号 apk的包名 或者appActivty:通过appt

  查找 aapt dump badging /path/to/apk.apk 

[HTTP] {"capabilities":{"firstMatch":[{"platformName":"Android","appium:platformVersion":"8.0","appium:deviceName":"emulator-5554","appium:appPackage":"com.lemon.lemonban","appium:appActivity":"com.lemon.lemonban.activity.WelcomeActivity"}]},"desiredCapabilities":{"platformName":"Android","platformVersion":"8.0","deviceName":"emulator-5554","appPackage":"com.lemon.lemonban","appActivity":"com.lemon.lemonban.activity.WelcomeActivity"}}

[W3C] Calling AppiumDriver.createSession() with args:

是 python 代码访问了 appium 服务提供的 /wd/hub/session 这个接口, 开启一个会话

3、w3c 校验

4、appium接收参数

5、appium 服务启动了 adb 程序,获取电脑上的手机设备, 如果参数不通过,就返回给客户端。

6、[ADB] Running 'D:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell am start -W -n com.lemon.lemonban/com.lemon.lemonban.activity.WelcomeActivity -S'
手动通过 adb 启动 app
adb shell : 进入手机的shell
android 是一个 linux 系统的发行版。 deepin, ubuntu, centos

安卓当中的 text 和 html 当中的 text:
- html text 不是元素属性。 //*[text()='']
- app text 是元素属性 //*[@text='']

class 和 html 当中有什么问题:
- html, class 主要用来排版
- 安卓当中, 元素的标签名: vs tag_name

content-desc :: 无障碍描述

resource-id: id
from appium.webdriver import Remote

# 得到一个driver
# 1、TODO: adb devices 确定手机在线
# 2、启动 appium 服务
# 如果appium启动了 4444 端口,就可以直接访问:因为Remote 设置了默认参数。
# Remote 提供的参数端口号和 appium 服务端口号保持一致

# 平台, 你要链接哪个手机, 操作哪个app
# 三个变量 key 不能变的。
# caps = {
#     'platformName': 'Android',
#     'deviceName': 'emulator-5554',
#     'app': r'D:\data\柠檬班环境\app测试环境\应用apk包\lemon_app_webview_debug.apk'
# }
#
# driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',
#                 desired_capabilities=caps)



# 可以不提供 app 路径,而是提供 app 的包名 和 activity
# 包名:
# activity: app当中的哪个页面。
from selenium.webdriver.common.by import By

caps = {
    'platformName': 'Android',
    # 校验系统版本
    # 'platformVersion': '8.0',
    # 'automationName': 'Uiautomator2',
    'deviceName': 'emulator-5554',
    'appPackage': 'com.lemon.lemonban',
    'appActivity': 'com.lemon.lemonban.activity.WelcomeActivity',
    # 'app': r'D:\data\柠檬班环境\app测试环境\应用apk包\Future-release-2018.apk',
    # 会使用缓存数据
    # 'noReset': False,
    # 'chromedriverExecutable': r'd:\'
    # - unicodeKeyboard: True
    # - resetKeyboard: True
    # autoGrantPermissions: True
}


driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',
                desired_capabilities=caps)

# 等待
driver.implicitly_wait(10)

# 找元素
driver.find_element(By.ID, 'com.lemon.lemonban:id/navigation_my').click()

driver.quit()

 



 

推荐阅读