营销型网站的推广方法,怎么做新网站的推广,网站节点加速,wordpress网址导航页面#x1f345; 点击文末小卡片#xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快 一、app自动化环境搭建
1、安装jdk及配置jdk的环境变量
app底层是c语言#xff0c;应用层是java#xff0c;所以需要jdk
2、安装SDK#xff0c;配置android… 点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快 一、app自动化环境搭建
1、安装jdk及配置jdk的环境变量
app底层是c语言应用层是java所以需要jdk
2、安装SDK配置android SDK环境 3、安装模拟器 4、下载安装Appium工具
01、appium客户端 appium destop 服务器
02、命令行安装pip.exe install Appium-Python-Client apium python库
二、测试
1、打开usb选项
2、电脑与模拟器建立连接 通过adb命令
检查电脑和模拟器是否建立连接 adb devices
3、没有连接 adb connect 127.0.0.1:62001 三、pycharm代码启动app.apk
1、线性代码
下载考研帮在电脑端下载后拉到模拟器即可使用
#用python代码启动考研帮
#提前告知代码要测试哪个app,哪个设备
#设备信息
from appium import webdriverinfo{
#测试的平台Androidios
#info[platformName]Android
platformName:Android,
#测试的版本号设置-关于-版本号
platformVersion:7.1.2,
#设备名adbdevices
deviceName:127.0.0.1:62001,
#包名获取方式有很多种adbshelldumpsyswindowfindstrmCurrentFocu打开当前窗口的命令
appPackage:com.tal.kaoyan,
#应用名
appActivity:com.tal.kaoyan.ui.activity.SplashActivity,
#允许不重置
noRest:False
}
#启动考研帮
#web自动化seleniumwebdriver
#app自动化appiumwebdriver
driverwebdriver.Remote(http://127.0.0.1:4723/wd/hub,info)
#重点打开appiumdestop,start#清空设置-应用-缓存
#appiumsdk中的工具toolsuiautomator.bat
#测试登录
#取消点击
#driver.find_element_by_id(android:id/button2).click()
#跳过点击
#driver.find_element_by_id(com.tal.kaoyan:id/tv_skip).click()
#用户协议点击同意
#每次打开界面都不一样不写代码了
#无法播放此视频点击确定
driver.find_element_by_id(android:id/button1).click()
#密码登录
driver.find_element_by_id(com.tal.kaoyan:id/loginRegistorcodeAndPassword).click()
#输入用户名输入密码,点击登录按钮
driver.find_element_by_id(com.tal.kaoyan:id/loginEmailEdittext).send_keys()
driver.find_element_by_id(com.tal.kaoyan:id/loginPasswordEdittext).send_keys()
#已阅读并同意点击单选按钮
driver.find_element_by_id(android.widget.CheckBox).click()
#点击登录
#driver.find_element_by_id(com.tal.kaoyan:id/loginLoginBtn).click()
#xpath写法
driver.find_element_by_xpath(//*[text登录]).click()
2、优化代码
优化思路
登录脚本 优化 配置信息放在yaml文件 启动时如果说没启动启动报错可以用日志文件记录起来封装日志 登录有些app会弹窗这些方法可以封装成公共方法 公共文件 登录脚本关键字驱动把常用的方法封装成一个文件 测试登录测试不同的情况可以用unittest,pytest;ddt测试数据可以放在测试文件中 生成测试报告 unittestpytest 把框架放在jenkins,实现开发提交代码就自动运行自动化框架把测试报告发出来 搭建框架容易难点在编程基础
完整优化代码
2.1base_page.py
#基类封装的公共方法都在这里class BasePage:def __init__(self,driver):self.driver driver#元素定位def locator(self,loc):return self.driver.find_element(*loc)#输入# self.driver.find_element_by_id().sendkey()def input_(self,loc,txt):self.locator(loc).send_keys(txt)# 点击def click(self,loc):self.locator(loc).click()
2.2common_fun.py
import logging
from selenium.common.exceptions import NoSuchElementException
import logging
from selenium.webdriver.common.by import By
from config.desired_caps import appium_desiredfrom config.base_page import BasePage
class Common(BasePage):cancel (By.ID,android:id/button2)skip(By.ID,com.tal.kaoyan:id/tv_skip)def check_cancel(self):logging.info(开始检查取消按钮)try:cancelself.driver.find_element(*self.cancel)except NoSuchElementException:logging.info(取消按钮没有找到)else:logging.info(点击取消)cancel.click()def check_skip(self):logging.info(开始检查跳过按钮)try:skip self.driver.find_element(*self.skip)except NoSuchElementException:logging.info(跳过按钮没有找到)else:logging.info(点击跳过)skip.click()#1、获取整个屏幕的大小sizedef size(self):# adriver.get_window_size()[width]xself.driver.get_window_size()[width]yself.driver.get_window_size()[height]return x,y#向左划宽1000 高1000# driver.swipe(900,800,500,800,2000)def swipeLeft(self,t,n):lsizeself.driver.size()#900x1lsize[0]*0.9y1lsize[1]*0.5x2lsize[0]*0.1for i in range(n):self.driver.swipe(x1,y1,x2,y1,t)
2.3cs_caps.yaml platformName: Android
platformVersion: 7.1.2
deviceName: 127.0.0.1:62001
appPackage: com.tal.kaoyan
appActivity: com.tal.kaoyan.ui.activity.SplashActivity
noRest: False
ip: 127.0.0.1
port: 4723
2.4desired_caps.py
import yaml
from appium import webdriver
from config.testLog import test_log
logtest_log()
# 要yaml文件的数据 找到yanl文件可读
def appium_desired():stream open(../config/cs_caps.yaml, r)# 数据加载出来data yaml.load(stream, Loaderyaml.FullLoader)# 字典是什么 元组是什么info {}info[platformName] data[platformName]info[platformVersion] data[platformVersion]info[deviceName] data[deviceName]info[appPackage] data[appPackage]info[appActivity] data[appActivity]info[noRest] data[noRest]# info[ip]data[ip]# info[port]data[port]# driver webdriver.Remote(http://127.0.0.1:4723/wd/hub, info)log.info(开始跑)driver webdriver.Remote(http:// str(data[ip]) : str(data[port]) /wd/hub, info)return driver
if __name__ __main__:appium_desired()
2.5login_page.py
from selenium.webdriver.common.by import By
from config.common_fun import Commonlogtest_log()
class LoginPage(Common):user(By.ID, com.tal.kaoyan:id/login_email_edittext)pwd(By.ID, com.tal.kaoyan:id/login_password_edittext)button (By.ID, com.tal.kaoyan:id/login_login_btn)def login(self, username,password):#点击取消self.check_cancel()#点击跳过self.check_skip()#输入用户名输入密码点击登录log.info(请输入用户名%s%username)self.input_(self,user,username)log.info(请输入密码%s % password)self.input_(self, pwd, password)self.click(self.button)#要测试各种情况测正常的情况异常的情况先进性unittest永历官吏框架
#结合ddt,想要把测试数据放在Yaml中放在代码
if __name__ __main__:driver appium_desired()lpLoginPage(driver)lp.login(qwerty2664,qwerty123)
2.6testLog.py
#日志
import logging
def test_kog():loggerlogging.getLogger()logger.setLevel(logging.INFO)if not logger.handlers:#输出到控制台shlogging.StreamHandler()logger.addHandler(sh)#设置格式fomartorlogging.Formatter(fmt%(asctime)s%(filename)s%(levelname)s%())sh.setFormatter(fomartor)#输出到文本fh logging.FileHandler(../logs/runlog.log,encodingutf-8)logger.addHandler(fh)fh.setFormatter(fomartor)return logger
四、总结
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。