在项目中,app更新后,都会发布新的apk版本,然后去蒲公英对应的网站上扫码下载对应的apk进行测试。所以就在想,通过app参数进行安装时,是否可以先通过代码去拉取一遍最新的apk安装包。

因为学习之后肯定是想写成一个框架来用的。暂时只用看App包下的

先创建一个getcwd.py,代码如下

import os
def get_cwd():
# 返回项目的根目录
path = os.path.dirname(os.path.abspath(__file__))
return path

通过返回的路径来确定根目录的路径。

接下来是ApkConfig.py的代码

import os
import getcwd
from selenium import webdriver
from FrameWord.Base import Base
import time path = getcwd.get_cwd() # 当前项目根目录路径
App_path = os.path.join(path, 'App') # App文件夹所在的路径 class ApkConfig:
"""apk下载删除等方法""" def get_apk_name(self):
"""遍历App文件夹,获取apk的文件名"""
# 遍历App文件夹下文件
for i in os.listdir(App_path):
# 如果是文件并已.apk结尾
if os.path.isfile(os.path.join(App_path, i)) and os.path.splitext(i)[1] == '.apk':
return i def get_apk_path(self):
"""apk路径"""
apk_name = self.get_apk_name()
app_path = os.path.join(App_path, apk_name)
return app_path def remove_apk(self):
"""删除apk文件"""
os.remove(self.get_apk_path()) def get_apk(self):
"""下载apk安装包"""
base = Base()
# 设置chrome浏览器下载配置
option = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0,
'download.default_directory': App_path}
option.add_experimental_option('prefs', prefs)
# 初始化一个带有配置的chrome实例
driver = webdriver.Chrome(chrome_options=option)
# 从配置文件获取apk下载地址,对应app蒲公英发布地址
apk_url = base.config_get('AppConfig', 'url')
# 请求该地址
driver.get(apk_url)
driver.maximize_window()
driver.implicitly_wait(10)
# 点击下载按钮
driver.find_element_by_id('down_load').click()
# 暂停2秒,等待浏览器创建下载任务。电脑反应慢的可以多加点时间。
# 没这句会来不及创建下载任务就直接关闭了
time.sleep(2)
# 调用等待方法
self.download_done()
driver.quit() def download_done(self):
"""chrome下载未完成文件已.crdownloda结尾
通过这点来判断是否下载完成。
未完成就继续等待"""
# 遍历App文件夹下文件
for i in os.listdir(App_path):
# 如果有.crdownloda结尾的文件存在
if '.crdownload' in i:
# 等待下载
time.sleep(1)
# 递归
self.download_done()

下载apk方法中base = Base()可以去掉。url可以直接填写进去就行了。我是通过基类中的配合文件读取来读取的地址。

我这边是测试都OK的

Python3+Appium学习笔记04-自动下载apk的更多相关文章

  1. Python3+Appium学习笔记01-环境配置(上)

    公司可能也有关于对app自动化的一些想法,让我去研究下.当然以移动互联网的热度.对于app自动化测试技术听闻已久.也一直想要去学习.正好.这次可以在工作时间中学习.emmm.希望自己能坚持把这个系列更 ...

  2. Python3+Appium学习笔记08-元素定位

    appium整合了不同的自动化测试驱动程序.而新版本appium desktop 中安卓是使用UI Automator2来作为驱动程序的.以前版本是使用UI Automator1或 Selendroi ...

  3. Python3+Appium学习笔记03-启动app

    这个是appium相关的官方api地址:http://appium.io/docs/en/about-appium/api/ 如同selenium进行自动化测试时,需要先创建一个浏览器实例一样.在使用 ...

  4. Python3+Appium学习笔记02-环境配置(下)

    配置所需软件及我当前使用的版本: 1)java jdk  1.8.0 2)android sdk  24.4.1 3)Python3  3.7.3 4)Appium-Python-Client 5)n ...

  5. Python3+Appium学习笔记09-元素定位android_uiautomator

    appium是使用了uiautomator的框架的,所以uiautomator所带的定位方式.appium也是支持的 需要使用appium中find_element_by_android_uiauto ...

  6. Appium学习笔记1_获取到APK安装包的Package以及Activity属性值

    我们设置DesiredCapabilities属性值得时候需要设置"appPackage"和"appActivity",如何获取到这两个值呢? 这两个值不是随便 ...

  7. Python3+Appium学习笔记07-元素定位工具UI Automator Viewer

    这篇主要说下如何使用UI Automator Viewer这个工具来定位元素.这个工具是sdk自带的.在sdk安装目录Tools目录下找到uiautomatorviewer.bat并启动它 ​ 如果启 ...

  8. Python3+Appium学习笔记06-noReset参数

    百度很多文章说noReset这个参数是用来防止重复安装app的.可能这是以前的用法.目前最新版本appium默认是清除session信息,并且不会删除应用的. ​ noReset这个参数,根据appi ...

  9. Python3+Appium学习笔记05-报错及解决方法

    记录一下使用期间各种报错和解决方法,毕竟搜了半天才找到解决方法.另外提示一下.优先看官方文档. 报错前面都是一样,就是说在处理的时候,服务器发生了一个未知的错误.然后才是具体报错信息 1)seleni ...

随机推荐

  1. Apache服务器安装SSL证书

    Apache服务器安装SSL证书 在证书控制台下载Apache版本证书,下载到本地的是一个压缩文件,解压后里面包含_public.crt文件是证书文件,_chain.crt是证书链(中间证书)文件,. ...

  2. 最新 东方明珠java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.东方明珠等10家互联网公司的校招Offer,因为某些自身原因最终选择了东方明珠.6.7月主要是做系统复习.项目复盘.Leet ...

  3. sql server新旧数据库的表结构差异

    sql server编写通用脚本自动检查两个不同服务器的新旧数据库的表结构差异 问题:工作过程中,不管是什么项目,伴随着项目不断升级版本,对应的项目数据库业务版本也不断升级,数据库出现新增表.修改表. ...

  4. 【转帖】龙芯将两款 CPU 核开源,这意味着什么?

    龙芯将两款 CPU 核开源,这意味着什么? https://www.oschina.net/news/78316/loongson-open-source-two-cpu-core 文章挺不错的 也讲 ...

  5. hanlp自然语言处理包的人名识别代码解析

    HanLP发射矩阵词典nr.txt中收录单字姓氏393个.袁义达在<中国的三大姓氏是如何统计出来的>文献中指出:当代中国100个常见姓氏中,集中了全国人口的87%,根据这一数据我们只保留n ...

  6. thinkphp中return $this->fetch的问题

    当reture放在foreach循环外面,也就是现在的位置的时候,会报错.如下图.但当return放在foreach语句里面的时候就不会报错,但因为return会结束语句,这也就导致了foreach只 ...

  7. IT 界的“名言”

    --喜欢记得关注我哟[shoshana]-- 中国有很多古代警世名言,朗朗上口,凝聚了很多故事与哲理.硅谷的互联网公司里头也有一些这样的名言,凝聚了很多公司价值观和做事的方法,对于很多程序员来说,其影 ...

  8. nasm 使用总结

    1,编译 nasm -f bin myfile.asm -o myfile  生成目标文件 nasm -f bin myfile.asm -l myfile   生成清单文件 2,快速开始 nasm是 ...

  9. 怎样获取所有的embed节点对象

    <embed>是H5中新增的标签, 可以通过: document.embeds 和 document.plugins 获取所有的 embed 节点 document.embeds === ...

  10. hdu 1068 最大子序列和变形,,,

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #d ...