最近研究一门反编译的绝技,真可谓炉火纯清,哈哈(mac本哈,windows本没研究呢)
开始:打开终端输入cd ls这步是我们查看所有文件
我的是创建在桌面所以我就输入cd Desktop ls 这是看我们桌面上的文件
找我的apk我的是:
cd qieziyisheng ls
cd com.qiezzi.eggplant ls
这一步是进入到我的文件夹里面
然后我们要找mainefest文件,输入:Java -jar AXMLPrinter2.jar AndroidManifest.xml>AndroidManifes3t.xml 然后就会生成一个AndroidManifes3t.xml 文件,这就是我们要的反编译文件。
/Users/yuliguo/Library/Android/sdk这个文件下找tools然后bin然后uiautomatorviewer文件打开,这个是找空间的
上面到这反编译就结束了
开始app toast测试附上代码
welcome.py
前面的都是固定的注意:版本号,识别码,apk路径,包名的切换
#-*- coding:utf-8 -*- import unittest # 导入 appium from appium import webdriver # 导入time包 import time # 导入显式等待的三个包 from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 定义一个类 class Welcome(unittest.TestCase): def setUp(self): # 设置打开客户端需要配置的参数 # 定义一个字典 self.qiezzi = {} # 设置启动需要的参数 self.qiezzi['platformName'] = 'Android' # 设置 版本号 self.qiezzi['platformVersion'] = '7.0' # 设置手机的唯一识别码 通过 adb devices self.qiezzi['deviceName'] = 'emulator-5554' # 设置需要启动的app的包名 通过反编译apk,包名在mainfest文件里面查找 self.qiezzi['appPackage'] = 'com.bawei.a1509e' # 设置等待的包名 自动化测试工具 monkeyrunner self.qiezzi['appWaitPackage'] = 'com.bawei.a1509e' # 设置需要启动的activity self.qiezzi['appActivity'] = 'com.bawei.a1509e.MainActivity' # 设置等待启动的activity self.qiezzi['appWaitActivity'] = 'com.bawei.a1509e.MainActivity' # 设置每次运行是不是需要重新安装apk, 如果设置为 false表示需要重写安装,如果设置为true,表示不需要重写安装 self.qiezzi['noReset'] = False # 设置app的安装路径 self.qiezzi['app'] = '/Users/yuliguo/Desktop/app-release.apk' # 设置使用 unicode 输入法,同时禁用键盘 self.qiezzi['unicodekeyboard'] = True # 关闭键盘 self.qiezzi['resetKeyboard'] = True # 设置启动 app self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", self.qiezzi) # 因为手机端反应比较慢,所以我们需要把休眠时间设置的长点,在这里设置10秒 time.sleep(10) pass
def tearDown(self): # 关闭客户端 self.driver.quit() pass
toast的测试用例
def test_register_toast(self): # 开始查找控件 btn_click = self.driver.find_element_by_id("com.bawei.a1509e:id/btn_click") btn_click.click() # 查找toast toast_loc = (By.XPATH, ".//*[contains(@text,'按钮被点击了')]") WebDriverWait(self.driver, 30, 0.1).until(EC.presence_of_element_located(toast_loc)) str = self.driver.find_element_by_xpath(".//*[contains(@text,'按钮被点击了')]").text # print str # 进行断言 self.assertEqual(str,u"按钮被点击了")
pass
啰嗦点废话,可能也有用
# 公司的业务流程: 产品出原型图: UI效果图 出完这个图以后,一般情况下,公司会开会进行项目评估,看看项目符合不符合需求 # 开发能不能把他开发出来,如果开发开发不出来,进行修改效果图,如果都没问题 # 后台开始写接口 # 测试熟悉项目,同时写测试用例,同时对接口进行测试,测试一下接口通不同,数据对不对,后台写完一个你测试一个 使用postman 或者Jmeter # 安卓 和 ios web前端开始开发起前端 # 等到项目开发完成,我们开始进行功能测试和兼容测试,测试完成以后 # 进行版本迭代的时候,开发开发的时候,我们把脚本写完,前一版本的脚本写完, # 等到第二版本上线的时候,老功能就可以用自动化进行回归,新功能手测试 # 性能测试在在版本文档,上线前夕进行性能测试,模拟大并发,进行性能测试需要搭建测试环境 liuxn + mysql tocat + war
继续:dialog的测试用例
def test_click_dialog(self): # 点击dialog按钮 btn_click_dialog = self.driver.find_element_by_id("com.bawei.a1509e:id/btn_click_dialog") # 设置点击时间 btn_click_dialog.click() # 休眠两秒 time.sleep(2) # 查找dialog里面的内容 tv_dialog = self.driver.find_element_by_id("com.bawei.a1509e:id/tv_dialog") # 获取内容 message = tv_dialog.text # 进行断言 self.assertEqual(message,u"我是中国人") pass
popwindow的测试用例
def test_click_pop_window(self): # 注意在切换popwindow的时候我们需要在安卓代码里面加入一句代码,获取焦点的代码,如下 # popupView.setFocusable(true); #点击window控件 btn_click_pop=self.driver.find_element_by_id("com.bawei.a1509e:id/btn_click_pop") #点击 btn_click_pop.click() #休眠 time.sleep(2) #查找控件 tv_popwindow=self.driver.find_element_by_id("com.bawei.a1509e:id/tv_popwindow") #获取内容 message=tv_popwindow.text print message #进行断言 self.assertEqual(message,u"这是一个popwindow")
到这里差不多就这些,运行之前需要启动appium 模拟器等等,看之前的文章。。。