移动端自动化测试实战
思寒
霍格沃兹测试开发学社创始人
24277 人已学习
新⼈⾸单¥59
课程目录
已完结/共 59 讲
第一章:自动化测试理论 (6讲)
第二章:App结构解析 (3讲)
第四章:Android自动化测试 (4讲)
第五章:iOS自动化测试 (6讲)
第六章:基于Page Object模式的自动化测试用例实战 (5讲)
第七章:测试框架封装改造 (4讲)
第八章:自动遍历回归测试 (3讲)
第十章:移动自动化测试持续集成实战 (4讲)
移动端自动化测试实战
登录|注册
留言
11
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 19 | 测试用例的改造
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 自动化测试的价值
04 | 自动化测试常见误区
05 | 自动化测试的技术体系
06 | UI分层测试体系
07 | Android App的常见概念
08 | Android调试桥adb命令详解
09 | 自动化测试常用命令
10 | Appium架构介绍
11 | Appium Desktop安装
12 | Appium Server安装
13 | Appium Desktop用例录制
14 | 用例结构解析
15 | 使用隐式等待让用例更稳定
16 | 控件定位方法
17 | 常用自动化API
18 | 长按/滑动等TouchAction应用
19 | 测试用例的改造
20 | capability使用进阶
21 | Appium设备交互API
22 | 使用显式等待处理复杂等待条件
23 | 高级XPath定位
24 | Android Toast识别
25 | 使用断言验证预期结果
26 | 参数化与数据驱动
27 | Native原生App的自动化测试
28 | Hybrid混合App的自动化测试
29 | 纯HTML5站自动化测试
30 | 小程序自动化测试
31 | iOS测试工具体系
32 | App Store与苹果证书体系
33 | iOS模拟器自动化测试
34 | iOS真机测试
35 | iOS WebView测试
36 | Safari测试
37 | Page Object设计模式
38 | Page Object六大设计原则
39 | Page Object第一个例子
40 | 基于Page Object模式的移动自动化测试实战
41 | BasePage封装改进
42 | Appium错误排查与日志分析
43 | Appium原理与JSONWP协议分析
44 | Appium源代码分析
45 | Appium二次封装实战
46 | 自动遍历测试方法与常见技术介绍
47 | Monkey Maxim遍历测试工具
48 | AppCrawler跨平台自动遍历测试
49 | 移动自动化测试平台价值
50 | 技术架构与智能设备选型
51 | 多设备管理平台STF
52 | Selenium Grid方案剖析
53 | 基于Jenkins的自动化调度详解
54 | 多设备回归测试
55 | 多设备多分辨率的兼容性测试方法
56 | 测试用例调度
57 | 手机等智能设备调度
58 | 测试报告定制
59 | 结课测试&结束语
本节摘要

Appium 参考文档汇总与安装、课件和 Demo 地址
https://gitee.com/geektime-geekbang/Geek_AppAutomationTesting
Full pytest documentation
https://docs.pytest.org/en/latest/contents.html#toc

展开
登录 后留言

全部留言(11)

  • 最新
  • 精选
HaiYan
为什么我选择配置了pytest,但是run的时候,无法使用pytest执行?

作者回复: 把ide之前自动生成的运行配置删除即可

2019-12-19
4
3
多崎作
if __name__ == "__main__": pytest.main(["-q","test_demo.py"])。 需要在后面加这个才能以Pytest执行

作者回复: 不需要 用pytest执行整个目录或者文件即可

2020-01-04
2
1
柠檬不萌不好次T_T
我也是,没有运行也没有报错就结束了,配置也配了,有人说要加if __name__ == '__main__': pytest.main(["-s", "test_demo.py"])这个才能运行,我加上了也可以了,但看老师也没加,好奇是怎么运行的,老师求解

作者回复: 你需要修改下pycharm默认使用的单测框架,把default test runner从unittest修改为pytest。

2019-12-17
2
和平飞翔
app: xueqiu 12.0 用appium server ,pycharm 运行代码,启动session,同一段完整代码,在appium-desktop不会报错。 caps = {} caps["platformName"] = "android" caps["deviceName"] = "myphone" caps["appPackage"] = "com.xueqiu.android" caps["appActivity"] = ".view.WelcomeActivityAlias" caps["newCommandTimeout"] = "120" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) 在appium server 运行命令窗口打印日志: Closing session, cause was 'Unexpected shutdown' 完整代码: caps = {} caps["platformName"] = "android" caps["deviceName"] = "myphone" caps["appPackage"] = "com.xueqiu.android" caps["appActivity"] = ".view.WelcomeActivityAlias" caps["newCommandTimeout"] = "120" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) driver.implicitly_wait(20) el1 = driver.find_element_by_xpath("//android.widget.Button[@class='android.widget.Button'][@index='3']") el1.click() el2 = driver.find_element_by_xpath("//android.widget.LinearLayout[@class='android.widget.LinearLayout'][@index='0']") el2.click() el3 = driver.find_element_by_xpath("//android.widget.RelativeLayout[@class='android.widget.RelativeLayout'][@index='0']") el3.click() el4 = driver.find_element_by_id("com.xueqiu.android:id/home_search") el4.click() el5 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text") el5.send_keys("alibaba") driver.quit()

作者回复: 你在appium的log中找下session被终止的关键日志贴下看看

2019-12-06
橙子
我的类继承了TestCase后,整个类和函数test_demo为什么没有变成可执行的函数呢?

作者回复: 信息太少,没法判断,你看下你的pychharm默认用的那个单测框架做解析的。

2019-12-04
Geek_829b0b
使用appium命令启动appium server执行程序就会报错,但是启动appium desktop启动appium去执行同样的代码就不会报错,请问这是什么原因呀,每次可以启动APP,但是执行到隐式等待处报错,报错信息: selenium.common.exceptions.InvalidSessionIdException: Message: A session is either terminated or not started python/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py:242: InvalidSessionIdException

作者回复: 先看下appium log中是如何结束session的。也可能是上一个session你没有显式quit导致它超时退出影响了你下一个session

2019-12-03
4
りくさん
按照这样写,我执行跑不起来,也不报错

作者回复: 你可能是什么都没调用吧,可以调试下。看看代码的走向

2019-11-22
2
城005
这个用的是什么模拟器啊,名字叫啥?
2022-12-25
老板二两面
from appium import webdriver class TestDemo: def setup(self): caps = {} caps["deviceName"] = "test" caps["platformName"] = "android" caps["appPackage"] = "com.netease.cloudmusic" caps["appActivity"] = ".activity.LoadingActivity" caps["autoGrantpermissions "] = True caps["unicodeKeyboard"] = True caps["resetKeyboard"] = True self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) self.driver.implicitly_wait(10) def test_Demo01(self): el1 = self.driver.find_element_by_id("com.netease.cloudmusic:id/agree") el1.click() el2 = self.driver.find_element_by_id("com.netease.cloudmusic:id/permissionGrant") el2.click() el3 = self.driver.find_element_by_id("com.android.packageinstaller:id/permission_allow_button") el3.click() el3.click() el4 = self.driver.find_element_by_id("com.netease.cloudmusic:id/agreeCheckbox") el4.click() el5 = self.driver.find_element_by_accessibility_id("mail") el5.click() el6 = self.driver.find_element_by_id("com.netease.cloudmusic:id/email") el6.send_keys("13688309819@163.com") el7 = self.driver.find_element_by_id("com.netease.cloudmusic:id/password") el7.send_keys("QZY123..") el8 = self.driver.find_element_by_id("com.netease.cloudmusic:id/login") el8.click() # def teardown(self): # self.driver.quit() 大神看看 ,我的怎么运行不起来啊
2020-08-10
阎晓静
1.Pycharm-> Preferences 打开可修改current project配置 2.File中只有New project setting 可以为新建工程建立配置
2020-06-16
收起评论