在项目中,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的