实验平台

Windows11

JAVA JDK11

Python IDE “PyCharm”

Python Anaconda3(Python 3.8.8)

Appium Server GUI

Appium Inspector(新版Appium 将Inspector被分离出来作为一个独立的软件 )

Android Studio (Android SDK)

nodejs

实验步骤

1.配置环境

(1)安装PyCharm

appium支持javascript appium支持安卓11吗_ide

(2)安装Anaconda3(python3.8.8)直接安装python也行

appium支持javascript appium支持安卓11吗_pycharm_02

 

(3)在Anaconda3的控制台安装” appium-python-client”.

python需要appium-python-client调用 Appium Server 进行通信

appium支持javascript appium支持安卓11吗_ide_03

(4)配置PyCharm的python(Anaconda3)环境

appium支持javascript appium支持安卓11吗_appium支持javascript_04

 

appium支持javascript appium支持安卓11吗_ide_05

 

(5)安装 Android SDK 。

我手机是安卓11,为了保证SDK对安卓11的支持。这里我是下载了Android Studio再用Android Studio下载android 11的SKD。

appium支持javascript appium支持安卓11吗_appium支持javascript_06

appium支持javascript appium支持安卓11吗_ide_07

也可以直接下载androidsdk解压。这样占用存储空间会小一点

(5.1)配置SDK环境变量

在系统变量里添加 “ANDROID_HOME”,Android Studio的SKD默认保存在

C:\Users\用户\AppData\Local\Android\Sdk。

并在path里加上platform-tools地址

appium支持javascript appium支持安卓11吗_python_08

appium支持javascript appium支持安卓11吗_appium支持javascript_09

 

配置完以后到cmd里输入adb查看是否配置正确

appium支持javascript appium支持安卓11吗_pycharm_10

(6)连接手机 打开手机开发者模式并进入,打开USB调试。(不同品牌开发者模式位置不同)

appium支持javascript appium支持安卓11吗_软件测试_11

 

(6.1)连接好以后,打开命令行窗口(cmd), 执行命令

adb devices

来列出连接在电脑上的安卓设备。

appium支持javascript appium支持安卓11吗_python_12

显示device即可

(7)安装JAVA JDK11

到JAVA 官网找到JAK11的安装包,进行安装,并配置环境变量

(此处略,网上有很多jdk安装教程)

(8)安装Appium Server GUI和Appium Inspector(可以不用下,走个形式)

(新版本的Appium将功能分离了要额外安装Inspector)

appium支持javascript appium支持安卓11吗_python_13

 

 

appium支持javascript appium支持安卓11吗_ide_14

appium支持javascript appium支持安卓11吗_python_15

 

俩个软件可以官网GitHub上下载。

(8.1)配置Appium Server GUI环境

打开Appium Server GUI,点击编辑配置(Appium启动比较慢)

填写Java JDK和Android SDK目录保存并重启

appium支持javascript appium支持安卓11吗_ide_16

2.编写自动化测试程序

(1)获取要测试应用的Package 和 Activity

手机打开要测试的应用(这里我选择哔哩哔哩)

appium支持javascript appium支持安卓11吗_pycharm_17

 

在CMD输入

adb shell dumpsys window w |grep \\/ |grep name=

根据不同的设备命令可能会不同

这里附上其他命令

adb shell dumpsys window w |findstr \/ |findstr name=  
adb shell dumpsys activity recents | find "intent={"

找到哔哩哔哩的Package 和 Activity

根据运行结果可以得知现在哔哩哔哩(6.47.0)的Package 和 Activity分别是

tv.danmaku.bili

tv.danmaku.bili.MainActivityV2

(2)查看要测试应用的相关信息

打开Appium Server GUI启动服务

appium支持javascript appium支持安卓11吗_pycharm_18

appium支持javascript appium支持安卓11吗_pycharm_19

 

打开Appium Inspector(可以不用做,走个形式),并填写相关配置,填写远程主机,端口号和路径

appium支持javascript appium支持安卓11吗_ide_20

 

{

  "platformName": "Android", 

  "platformVersion": "11",  //安卓版本号

  "deviceName": "MI 9",     //设备名,可自定义

  "appPackage": "tv.danmaku.bili",    //哔哩哔哩的Package

  "appActivity": "tv.danmaku.bili.MainActivityV2", //哔哩哔哩首页的Activity

  "unicodeKeyboard": "True",          //使用自带输入法,输入中文时填True

  "resetKeyboard": "True",               //执行完程序恢复原来输入法

  "noReset": "True",                        //不要重置App

  "newCommandTimeout": "6000",

  "automationName": "UiAutomator2"

}

填完后点击右下角的Start Session,用选择器捕获需要的按钮。

appium支持javascript appium支持安卓11吗_pycharm_21

 

(4)用PyCharm编写自动化测试代码

appium支持javascript appium支持安卓11吗_pycharm_22

 

from appium import webdriver

from appium.webdriver.extensions.android.nativekey import AndroidKey

desired_caps = {
  'platformName': 'Android', # 被测手机是安卓
  'platformVersion': '11', # 手机安卓版本
  'deviceName': 'MI 9', # 设备名,安卓手机可以随意填写
  'appPackage': 'tv.danmaku.bili', # 启动APP Package名称
  'appActivity': 'tv.danmaku.bili.MainActivityV2', # 启动Activity名称
  'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
  'resetKeyboard': True, # 执行完程序恢复原来输入法
  'noReset': True,       # 不要重置App
  'newCommandTimeout': 6000,
  'automationName' : 'UiAutomator2'
  # 'app': r'd:\apk\bili.apk',
}

# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 设置缺省等待时间
driver.implicitly_wait(5)

# 如果有`青少年保护`界面,点击`我知道了`
iknow = driver.find_elements_by_id("text3")
if iknow:
    iknow.click()

# 根据id定位搜索位置框,点击
driver.find_element_by_id("expand_search").click()

# 根据id定位搜索输入框,点击
sbox = driver.find_element_by_id('search_src_text')
sbox.send_keys('微凉丶VATE')
# 输入回车键,确定搜索
driver.press_keycode(AndroidKey.ENTER)

# 选择(定位)所有视频标题
eles = driver.find_elements_by_id("title")

for ele in eles:
    # 打印标题
    print(ele.text)

input('**** Press to quit..')
driver.quit()

编写好后运行程序,同意usb的安装。可以看到程序成功执行,顺利的抓取到了b站视频的标题

appium支持javascript appium支持安卓11吗_pycharm_23