selenium自动化脚本Pyinstall打包相关问题及注意事项

一、前言

在进行网页自动化测试脚本开发的过程中,难免会遇见需要将程序打包成可执行文件的情况,这个时候可能会出现许多问题,如打包后文件过大、依赖不匹配等问题,这里对我遇到的selenium自动化脚本打包过程中遇到的一些小问题进行一些简单的罗列。

二、打包后文件过大问题

一开始我是直接使用了Pyinstall进行打包,鉴于我对测试程序环境的管理没做好,我的许多简单的程序都是使用anaconda自创的base环境来运行的,这也导致了我的基础环境依赖非常的多,Pyinstall打包会将该环境所有的依赖库都打包进去,所以上百行的代码直接给我干到了几百M(有点不可思议),后来学习到了用虚拟环境的方法:

1.安装虚拟环境

1. 安装:pip install pipenv
2. 检测安装是否成功:pipenv --version
3. 预览一下pipenv的用法: pipenv --help
4. 激活环境: pipenv shell
5. 指定虚拟环境python版本:pipenv --python 3.6 #指定使用Python 3.6的虚拟环境
6. 在虚拟环境中安装需要的第三方库:pipenv install
7. 安装pyinstall库:pipenv install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
8. 卸载包:pipenv uninstall numpy #在项目所在虚拟环境中卸载numpy;pipenv uninstall --all--dev     #从虚拟环境中卸载所有开发包,并从Pipfile文件中移除这些包

2.打包

1.pyinstaller打包生成 .exe

pyinstaller -F -w main.py -i main.ico --workpath build路径 --distpath exe打包路径 -n exe名字

参数解释:
-F, --onefile 打包一个单个文件,如果你的代码都写在了一个py文件的话,可以使用这个命令,如果是多个py文件,就别用;
-D, --onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架的形式编写工具代码,代码易于维护;
-a, --ascii 不包含unicode编码的支持(包括默认值:如果可用)
-c, --console 使用控制台子系统执行(默认),只对windows有效
-w, --windowed, --noconsole 使用windows子系统执行,当程序启动的时候不会打开命令行(只对windows有效)
-i , --icon=<File.ico>file.ico添加为打包的exe文件的图表,只对windows系统有效
--icon=<File.exe,n>file.exe的第n个图标添加为可执行文件的资源,只对windows系统有效
-n Name,--name=Name 可选的项目,生成的.spec文件的名字和exe名字
-p 设置导入路径(和使用PYTHONPATH效果相似),可以使用路径分隔符(windows使用分好,linux使用冒号),制定多个目录的时候可以指定多个-p参数来设置,让pyinstaller自己去找程序的资源
--key KEY 用于加密Python字节码的密钥
--add-data 可以将一些非二进制文件添加到exe文件中进行打包,参数为格式为static;static
--distpath 指定打包后的程序存放目录,exe文件默认存放在当前目录下的dist目录中
--workpath 为输出的所有临时文件指定存放目录,默认为当前目录下的build目录

三、去除chromedriver黑框问题

想要隐藏driver的黑框控制台

1.首先找到service.py:

这个是selenium依赖库里面的,如果你是虚拟环境那么大概路径是:C:\Users\用户.virtualenvs\虚拟环境名称\Lib\site-packages\selenium\webdriver\common\service.py,如果不是那么就找到你的anaconda对应环境中的对应文件,比如:E:\Anaconda\anaconda\Lib\site-packages\selenium\webdriver\common\service.py,注意一定是webdriver下面的common文件夹

2.打开service.py文件,找到函数start,应该是在第61行的位置

在stdin=PIPE后面加上一段代码creationflags=134217728,变成:

def start(self):
        """
        Starts the Service.
        :Exceptions:
         - WebDriverException : Raised either when it can't start the service
           or when it can't connect to the service
        """
        try:
            cmd = [self.path]
            cmd.extend(self.command_line_args())
            self.process = subprocess.Popen(cmd, env=self.env,
                                            close_fds=platform.system() != 'Windows',
                                            stdout=self.log_file,
                                            stderr=self.log_file,
                                            stdin=PIPE,
                                            creationflags=134217728)

注意这里的可能是旧版本,最新的可以只更改类里面的变量就行:在这里插入图片描述
更改之后保存就不会在执行程序的时候弹出黑框。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值