Appnuim作业题
Appium 作业 1
根据课堂视频,安装搭建Appium运行环境,并运行示例代码
安装Appium Python Client 包
安装Appium Python Client 包的命令
pip install Appium-Python-Client
安装 Appium Server
下载安装Appium Desktop的安装包, 下载地址 https://github.com/appium/appium-desktop/releases/latest 下载扩展名为.exe的包
安装 Android Studio
官方中文网站 https://developer.android.google.cn/studio/archive.html 选择2.3.3 版本,包含了sdk的安装包 Windows IDE bundle with SDK (64-bit)
特别注意,安装程序要求路径中最好不要有空格。
安装JDK
到 oracle 官方网站下载JDK 1.8 的安装包,进行安装
安装安卓模拟器
先试试android studio里面自带的模拟器
打开 studio,创建一个项目,通过tools - android - AVD Manager菜单创建一个安卓模拟设备
如果不行,可以试试Genymotion,安装过程参考 https://github.com/jcyrss/songqin-testdev/issues/3
运行自动化测试
- 运行虚拟机,下载开发者头条应用,http://toutiao.io/s/apk
安装到虚拟机中并运行;
注册一个账号 - 根据课堂教学视频,运行Appium Server,并设置、启动服务
- 下载自动化脚本https://github.com/jcyrss/songqin-testdev/blob/master/appium/src/lesson1/toutiao_login.py 修改其中用户名,密码为你注册的账号,运行脚本完成一个自动登录功能
-
1
dfgdfg
Appium 作业 2
- 到如下网址下载 多多计算器
https://github.com/jcyrss/songqin-testdev/raw/master/appium/uploads/duoduoCalculators.apk
- 用 aapt.exe 命令查看 apk包的 appPackage 信息和 主 Activity 信息
- 用 UIAutomator Viewer 查看应用界面元素信息
- 编写python程序,完成一个 计算 3+9 ,结果 再乘以5 的自动化功能. 最后判断计算结果是否为60,如果是,测试通过;否则测试不通过
-
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
# coding=utf8
from
appium
import
webdriver
import
time,traceback
desired_caps
=
{}
desired_caps[
'platformName'
]
=
'Android'
desired_caps[
'platformVersion'
]
=
'6'
desired_caps[
'deviceName'
]
=
'test'
desired_caps[
'app'
]
=
r
'd:\apk\duoduoCalculators.apk'
desired_caps[
'appPackage'
]
=
'com.ibox.calculators'
desired_caps[
'appActivity'
]
=
'.SplashActivity'
desired_caps[
'unicodeKeyboard'
]
=
True
desired_caps[
'noReset'
]
=
True
desired_caps[
'newCommandTimeout'
]
=
6000
#启动Remote RPC
driver
=
webdriver.Remote(
'http://localhost:4723/wd/hub'
, desired_caps)
driver.implicitly_wait(
10
)
try
:
# -----------------
num3
=
driver.find_element_by_id(
"com.ibox.calculators:id/digit3"
)
num5
=
driver.find_element_by_id(
"com.ibox.calculators:id/digit5"
)
num9
=
driver.find_element_by_id(
"com.ibox.calculators:id/digit9"
)
plus
=
driver.find_element_by_id(
"com.ibox.calculators:id/plus"
)
mul
=
driver.find_element_by_id(
"com.ibox.calculators:id/mul"
)
equal
=
driver.find_element_by_id(
"com.ibox.calculators:id/equal"
)
num3.click()
plus.click()
num9.click()
equal.click()
mul.click()
num5.click()
equal.click()
# 检查结果,需要我们去找结果对应的界面元素,发现是下面这个TextView
# 研究发现没有特点,大家想想我们该怎么办
# 可以看看父节点有没有唯一标识,发现 父节点是有id的,
# 就可以怎么样?
# 先查找父节点,
# 再根据父节点元素 调用 find element 就是在父节点的范围内 查找
retLayout
=
driver.find_element_by_id(
'com.ibox.calculators:id/cv'
)
retTvs
=
retLayout.find_elements_by_class_name(
'android.widget.TextView'
)
retStr
=
retTvs[
1
].text
print
(retStr)
if
retStr
=
=
'60'
:
print
(
'pass'
)
else
:
print
(
'fail'
)
# -----------------
except
:
print
(traceback.format_exc())
input
(
'**** Press to quit..'
)
driver.quit()
Appium 作业 3
-
找到一个安卓设备(没有可以向朋友借用一下),将其连接到电脑上,根据课堂视频指导,确保可以被命令
adb devices -l
检测到 -
安装多多计算器(怎么装?自己想办法)
-
练习用 Appium Desktop中的 inspector查看界面。
-
将上次作业,用xpath方式定位元素,再实现一遍
-
-
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
# coding=utf8
from
appium
import
webdriver
import
time,traceback
desired_caps
=
{}
desired_caps[
'platformName'
]
=
'Android'
desired_caps[
'platformVersion'
]
=
'7.1'
#
desired_caps[
'deviceName'
]
=
'test'
desired_caps[
'app'
]
=
r
'd:\apk\duoduoCalculators.apk'
desired_caps[
'appPackage'
]
=
'com.ibox.calculators'
#
desired_caps[
'appActivity'
]
=
'com.ibox.calculators.SplashActivity'
desired_caps[
'unicodeKeyboard'
]
=
True
desired_caps[
'noReset'
]
=
True
desired_caps[
'newCommandTimeout'
]
=
6000
driver
=
webdriver.Remote(
'http://localhost:4723/wd/hub'
, desired_caps)
driver.implicitly_wait(
10
)
try
:
# -----------------
num3
=
driver.find_element_by_id(
'com.ibox.calculators:id/digit3'
)
num9
=
driver.find_element_by_id(
'com.ibox.calculators:id/digit9'
)
num5
=
driver.find_element_by_id(
'com.ibox.calculators:id/digit5'
)
plus
=
driver.find_element_by_id(
'com.ibox.calculators:id/plus'
)
equal
=
driver.find_element_by_id(
'com.ibox.calculators:id/equal'
)
mul
=
driver.find_element_by_id(
'com.ibox.calculators:id/mul'
)
num3.click()
plus.click()
num9.click()
equal.click()
mul.click()
num5.click()
equal.click()
# ----------------------
xpath
=
'//*[@resource-id="com.ibox.calculators:id/cv"]/android.widget.TextView[2]'
ele
=
driver.find_element_by_xpath(xpath)
retStr
=
ele.text
# ----------------------
print
(retStr)
if
retStr
=
=
'60'
:
print
(
'pass'
)
else
:
print
(
'fail!'
)
# -----------------
except
:
print
(traceback.format_exc())
input
(
'**** Press to quit..'
)
driver.quit()
Appium 作业 4
-
找到一个安卓设备(没有可以向朋友借用一下)
-
到华为官网 http://app.hicloud.com/ ,微信扫码右侧二维码,安装华为应用市场apk,
如果手机安装后不能打开的,可以点击这里下载老版本安装,老版本安装运行后,不要选择更新到新版本。
-
进入排行页面,滚动到 口碑最佳 部分
-
打印出所有 口碑最佳 部分的5个应用名称
-
-
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
# coding=utf8
from
appium
import
webdriver
import
time
import
traceback
desired_caps
=
{}
desired_caps[
'platformName'
]
=
'Android'
desired_caps[
'platformVersion'
]
=
'6'
desired_caps[
'deviceName'
]
=
'test'
desired_caps[
'app'
]
=
r
'd:\apk\HiSpace.apk'
desired_caps[
'appPackage'
]
=
'com.huawei.appmarket'
#app package名,指定了要运行的app
desired_caps[
'appActivity'
]
=
'com.huawei.appmarket.MainActivity'
#app默认Activity
desired_caps[
'unicodeKeyboard'
]
=
True
desired_caps[
'noReset'
]
=
True
desired_caps[
'newCommandTimeout'
]
=
6000
driver
=
webdriver.Remote(
'http://localhost:4723/wd/hub'
, desired_caps)
#启动Remote RPC
driver.implicitly_wait(
10
)
try
:
# ------------------------------
javaCode
=
'new UiSelector().resourceId("com.huawei.appmarket:id/tabLayout").childSelector(new UiSelector().text("排行") )'
driver.find_element_by_android_uiautomator(javaCode).click()
javaCode
=
'new UiSelector().text("总榜").resourceId("com.huawei.appmarket:id/ItemTitle")'
ele
=
driver.find_element_by_android_uiautomator(javaCode)
destPosY
=
ele.location[
'y'
]
xPos
=
ele.location[
'x'
]
driver.implicitly_wait(
0.5
)
while
True
:
driver.swipe(xPos,destPosY,xPos,destPosY
-
100
,
1000
)
javaCode
=
'new UiSelector().text("口碑最佳").resourceId("com.huawei.appmarket:id/ItemTitle")'
eles
=
driver.find_elements_by_android_uiautomator(javaCode)
if
not
eles:
continue
driver.swipe(xPos,eles[
0
].location[
'y'
],xPos,destPosY,
3000
)
break
driver.implicitly_wait(
10
)
eles
=
driver.find_elements_by_class_name(
"android.widget.TextView"
)
tvs
=
[]
for
ele
in
eles:
tvs.append(ele.text)
tvsStr
=
'|||'
.join(tvs)
pos1
=
tvsStr.find(
'口碑最佳|||'
)
targetStr
=
tvsStr[pos1:]
def
getName(No):
#'1', '2'
tp1
=
targetStr.find(No
+
'|||'
)
+
4
tp2
=
targetStr.find(
'|||'
,tp1)
return
targetStr[tp1:tp2]
print
(
'================ finally ++++++++++++ \n'
)
for
i
in
range
(
1
,
6
):
print
(getName(
str
(i)))
# ------------------------------
except
:
print
(traceback.format_exc())
input
(
'**** Press to quit..'
)
driver.quit()
Appium 作业 5
- 安装开发者头条应用
- 打开该应用,在阅读标签页中,点击 精选文章的第一篇,验证确实能打开同名文章
- 按返回键, 验证能够正确返回 阅读标签页
-
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
# coding=utf8
from
appium
import
webdriver
import
time,traceback
desired_caps
=
{}
desired_caps[
'platformName'
]
=
'Android'
desired_caps[
'platformVersion'
]
=
'5.1'
desired_caps[
'deviceName'
]
=
'test'
desired_caps[
'app'
]
=
r
'e:\apk\toutiao.apk'
desired_caps[
'appPackage'
]
=
'io.manong.developerdaily'
desired_caps[
'appActivity'
]
=
'io.toutiao.android.ui.activity.LaunchActivity'
desired_caps[
'unicodeKeyboard'
]
=
True
desired_caps[
'noReset'
]
=
True
desired_caps[
'newCommandTimeout'
]
=
6000
#启动Remote RPC
driver
=
webdriver.Remote(
'http://localhost:4723/wd/hub'
, desired_caps)
print
driver.session_id
driver.implicitly_wait(
10
)
try
:
# -----------------
# 用下面的表达式,也可以用xpath
code
=
u
'new UiSelector().resourceId("io.manong.developerdaily:id/btn_item").instance(0).childSelector(new UiSelector().className("android.widget.TextView"))'
ele1
=
driver.find_element_by_android_uiautomator(code)
text1
=
ele1.text
print
text1
ele1.click()
time.sleep(
2
)
ele2
=
driver.find_element_by_id(
'io.manong.developerdaily:id/tv_title'
)
text2
=
ele2.text
print
text2
if
text2
=
=
text1:
print
'pass'
else
:
print
'fail'
driver.press_keycode(
4
)
# 检查是否回到刚才的页面
ele2
=
driver.find_elements_by_id(
'io.manong.developerdaily:id/tab_bar_plus'
)
if
ele2:
print
'we return back'
# -----------------
except
:
print
traceback.format_exc()
driver.quit()
-
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥