基于华为商城的抢单工具python3.9的selenium webdriver使用及打包

这篇具有很好参考价值的文章主要介绍了基于华为商城的抢单工具python3.9的selenium webdriver使用及打包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文基于华为商城的抢单工具,讲解一下python3.9的selenium webdriver使用,网上也有相关的资料,但在自己动手做的过程中还是遇到了一些波折,想拿出来跟大家一起分享。开篇先放个图:
webdriveragentrunner如何打包,华为,selenium,测试工具
webdriveragentrunner如何打包,华为,selenium,测试工具
webdriveragentrunner如何打包,华为,selenium,测试工具
主要从三个大方面说明:开发环境搭建、工程打包、过程中所遇问题整理
话不多说,从头开捋:

一、开发环境搭建

1、 git代码clone:
假设clone后的工程路径为:D:\WorkSpace\MyPython\huawei_seckill,以下基于此路径展开说明,当前工程面向win10的64位(win7兼容处理后续有说明),代码地址:
https://gitee.com/lykiao/huawei_seckill.git

2、 工程文件夹为外层的huawei_seckill,其中入口文件为【huawei_seckill.py】,实际主代码文件为【huawei_seckill_module.py】,包了一层的原因是对主代码进行了加密用,后续会一一讲解。

3、 创建虚拟环境:
Ide(PyCharm)的命令行或cmd,cd到工程文件夹,执行命令python -m venv venv39,生成虚拟环境。
注:因为使用的python版本为3.9版,为了便于识别,所以起名为venv39(不强求,可随意起)。强烈推荐使用虚拟环境,因为工程不同,考虑兼容性,各库的使用版本就会不同,如果全部使用全局环境,切换工程时会遇到各种意想不到的问题。
如果创建成功,则会在工程文件夹下生成虚拟环境venv39:
webdriveragentrunner如何打包,华为,selenium,测试工具
4、 激活虚拟环境:
同步骤3,cd到工程文件夹,执行命令.\venv39\Scripts\activate,行首显示(venv39)则表示已成功激活虚拟环境,后续的所有操作都是在此虚拟环境下进行的。
webdriveragentrunner如何打包,华为,selenium,测试工具
5、 在虚拟环境下安装工程的依赖库:
目前均已导入到【requirements.txt】中,执行命令pip install -r requirements.txt进行安装即可。
webdriveragentrunner如何打包,华为,selenium,测试工具
注:如果工程中依赖库有所变动,在虚拟环境下执行命令pip freeze > requirements.txt可再次导出。

6、 浏览器驱动安装:
谷歌Chrome浏览器驱动:
http://chromedriver.storage.googleapis.com/index.html?path=114.0.5735.90/
火狐浏览器驱动:
https://github.com/mozilla/geckodriver/releases/
其他浏览器参照以下:
https://blog.csdn.net/catch_dreamer/article/details/109359208
下载解压后的exe【chromedriver.exe】放到虚拟环境中python.exe的同级目录下:D:\WorkSpace\MyPython\ huawei_seckill\venv39\Scripts
放入后一定要关闭PyCharm,再重启,否则直接运行会找不到driver,火狐【geckodriver.exe】就曾报错:WARNING: Exception trying to discover geckodriver version: error sending…
注意,以上为开发环境的处理方式,打包后火狐浏览器还是报错:ERROR: Message: Unable to obtain driver for firefox using Selenium Manager.; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
直接将火狐驱动【geckodriver.exe】放到huawei_seckill.exe同级文件夹中即可,谷歌浏览器驱动不需要,但保险起见,也一起放进来。后来发现没有安装火狐的机器这样也会报错。此处问题较多,可多试几次。

7、 开发环境中启动:
PyCharm中,右键入口文件,点选Run,或者点击上方三角符号即可启动:
webdriveragentrunner如何打包,华为,selenium,测试工具
注意:如果虚拟环境指定不正确,可通过以下方式调整
打开工程的配置:
webdriveragentrunner如何打包,华为,selenium,测试工具
检查下拉中是否有本工程创建的venv39,如果有,直接选择ok即可。我的目前就没有,所以上图报了一片红。
webdriveragentrunner如何打包,华为,selenium,测试工具
没有的情况,需要按以下方式添加:
webdriveragentrunner如何打包,华为,selenium,测试工具
webdriveragentrunner如何打包,华为,selenium,测试工具
上面步骤3我们已经手动生成了虚拟环境,选择Existing(存在),会自动指定到工程目录下的venv39:
webdriveragentrunner如何打包,华为,selenium,测试工具
如果不存在,选择New(新建),应该类似于步骤3的手动创建动作,我没试过,主要习惯了用命令行,之前PyCharm貌似也没有这个功能吧,有兴趣的朋友可以试一下。
点击OK,返回上一页面,可以看到已指定好虚拟环境,再点击OK即可:
webdriveragentrunner如何打包,华为,selenium,测试工具
就会发现刚才的红色都消失了。小插曲到此结束,回到刚才的启动话题,发现也能正常启动了。
webdriveragentrunner如何打包,华为,selenium,测试工具
如果启动时报缺少文件的错误,请稳步二的步骤6中查看。
webdriveragentrunner如何打包,华为,selenium,测试工具

二、工程打包

以上到运行成功为止,说明开发环境已调试通过,接下来说一下打包。
打包也有很多方式,网上资料很多,复杂的没尝试过,孰好孰坏不能妄加评判,如有需要可自行去搜索看看,目前使用的是比较大众的pyinstaller库。
1、 此种方式有单文件打包和多文件打包两种方式:
单文件打包:
在工程文件夹下执行命令:pyinstaller --icon=huawei_seckill.ico --version-file file_version_info.txt --key password -F -w huawei_seckill.py
注:由于单文件打包后,启动太慢,固使用了多文件打包方式。
多文件打包:
在工程文件夹下执行命令:pyinstaller --icon=huawei_seckill.ico --version-file file_version_info.txt --key password -D -w huawei_seckill.py
注:两种方式的命令只差在-F和-D上,password为打包时的加密密码,貌似极容易破解,可不用。如果打包报错,删除build和dist文件夹后重新打几次,直到成功为止。

关于加密设置,需要在工程文件夹中执行命令:pip install pycrypto来安装pycrypto库,由于会报以下错误,就没放到requirements.txt中一起安装,下面是我解决错误的方式:
从【C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include】复制【stdint.h】到
安装时报错路径【C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt】下,并且修改该目录下【inttypes.h】中的
【#include <stdint.h>】为【#include “stdint.h”】,然后重新进行安装即可。
另外,打包指定—key参数时还需要安装:pip install tinyaes,已在requirements.txt中包含,无需手动安装。指定的密码在使用pyinstxtractor解压后是可以看到的,形同虚设,所以推荐用下面的pyd混淆方式加密。

2、 由于使用了ddddocr库,如果打包后运行报错:onnxruntimeerror no_suchfile,可进行如下处理
以上打包会在工程文件夹下生成huawei_seckill.spec文件,编辑器打开进行以下编辑:
datas = [ ]改为:
datas = [
(‘./venv3/Lib/site-packages/onnxruntime/capi/onnxruntime_providers_shared.dll’,‘onnxruntime\capi’),(‘./venv3/Lib/site-packages/ddddocr/common.onnx’,‘ddddocr’),(‘./venv3/Lib/site-packages/ddddocr/common_old.onnx’,‘ddddocr’)
]
3、 如果打包后exe的icon图标不显示,也需要对huawei_seckill.spec文件进行编辑:
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)行以下添加以下代码:
#// 添加exe图标显示
a.datas += [(‘huawei_seckill.ico’, ‘huawei_seckill.ico’, ‘Data’)]
如图:
webdriveragentrunner如何打包,华为,selenium,测试工具
4、 以上huawei_seckill.spec文件修改后,需要重新打包,将build和dist文件夹删除,现在在工程文件夹下执行以下打包命令即可:
pyinstaller huawei_seckill.spec

5、 预防反编译处理:
以上为未进行防止反编译时的打包方式,如果对以上打包生成的exe进行反编译,比如使用以下的pyinstxtractor工程,会生成.pyc文件,再进一步还原出py文件,源代码可谓是一览无余,有兴趣的可以去试试:https://github.com/extremecoders-re/pyinstxtractor

为了尽量的防止代码泄露,可使用Cython库对代码进行pyd混淆加密,过程需要用到build_pyd.py文件,在工程文件夹中已添加。只需要在工程文件夹下执行命令:
python build_pyd.py build_ext –inplace
会将要加密的文件生成相应的pyd文件:
huawei_seckill_module.cp38-win_amd64.pyd => huawei_seckill_module.pyd
lock.cp38-win_amd64.pyd => lock.pyd
order_logger.cp38-win_amd64.pyd => order_logger.pyd
然后,按以上方式手动改名为右侧的名字(同.py原文件名)。
至此,再回到步骤4中,重新执行打包命令:pyinstaller huawei_seckill.spec即可。
在此说明一下,因为生成的pyd文件不能直接执行,需要被调用,所以才会出现开篇说的将主代码文件【huawei_seckill_module.py】剥离出来,用入口文件【huawei_seckill.py】调用(入口文件相对简单,不加密也无所谓)。

还有一点一定要注意,因为py和pyd同时存在时,会优先引入pyd文件,所以经过以上混淆和改名后,打包使用的肯定是pyd文件,如果回头再进行开发调试时,一定不要忘记把pyd文件删除,否则不管怎么改py文件都无法看到效果的,因为pyd文件被优先执行了,这对我一小白来说是血的教训!

6、 打包后整理:
在工程文件夹中,还有一个文件夹huaweiTool,因为使用的是多文件打包方式,从一堆文件里找到exe,还需要ini等各种文件,对用户来说显得太繁琐,所以此文件夹主要是面向用户使用的。当然,开发环境运行时也需要从此文件夹复制相应的文件使用。
a)、开发运行时:
将D:\WorkSpace\MyPython\huawei_seckill\huaweiTool\huawei_seckill中的文件复制到工程文件夹下(D:\WorkSpace\MyPython\huawei_seckill)
b)、打包运行后运行时:
将打包后D:\WorkSpace\MyPython\huawei_seckill\dist\huawei_seckill中的文件复制到D:\WorkSpace\MyPython\huawei_seckill\huaweiTool\huawei_seckill中,然后双击执行D:\WorkSpace\MyPython\huawei_seckill\huaweiTool\addShotcut.bat文件,即可对所有快捷方式进行更新,此后的操作只需要在huaweiTool文件夹中进行。修改【config.ini】和【order.ini】文件后,点击【huawei_seckill.exe】即可启动了。
注:check_env.bat可能不需要,暂且无视。可能windows的defender会报病毒,可稳步【addDefenderExclusion】文件夹中执行相关bat,添加信任文件夹来解决。
webdriveragentrunner如何打包,华为,selenium,测试工具
webdriveragentrunner如何打包,华为,selenium,测试工具

三、过程中所遇问题整理

1、Pillow库报错:
使用时发现报错:
File “D:\WorkSpace\MyPython\huawei_seckill\venv39\lib\site-packages\ddddocr_init_.py”, line 1614, in classification
image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.ANTIALIAS).convert(‘L’)
AttributeError: module ‘PIL.Image’ has no attribute ‘ANTIALIAS’
控制台中pip list查看Pillow的版本为10.0.0,可能是最新版与ocr中的版本冲突,可修改ocr,也可降级Pillow,参照链接:https://blog.csdn.net/light2081/article/details/131517132
本工程已做降级处理,使用requirements.txt中的9.5.0即可

2、启动成功,但chromedriver弹窗报错:handshake failed; returned -1, SSL error code 1, net_error -200
添加options参数,参照:
https://www.fyovo.com/6681.html
本工程代码已添加。

3、打包后,chromedriver会显示黑色弹窗,需要如下非表示处理:
修改【D:\WorkSpace\MyPython\huawei_seckill\venv39\Lib\site-packages\selenium\webdriver\common\service.py】
添加:from subprocess import CREATE_NO_WINDOW
webdriveragentrunner如何打包,华为,selenium,测试工具
找到:_start_process方法,修改【creationflags=self.creation_flags】为:creationflags=CREATE_NO_WINDOW,无creationflags时添加即可
webdriveragentrunner如何打包,华为,selenium,测试工具
webdriveragentrunner如何打包,华为,selenium,测试工具
注意,此项是对安装库的代码进行修改,所以本工程代码中无法处理,需要自行手动修改后再打包。

4、一定不要忘了把浏览器驱动【chromedriver.exe、geckodriver.exe】放到【D:\WorkSpace\MyPython\ huawei_seckill \venv39\Scripts】中再打包,否则启动报错。

5、如果开发环境中运行报win32api相关的错误,请将PyCharm重启一次再运行。

6、如果想同时兼容win7的64位,需要将python降至3.8.10版,此为兼容win7的最后一版python3(虽然还存在3.8.17,但已不提供installer文件了,只有源码)。
附3.8.10版的下载地址:
https://www.python.org/downloads/release/python-3810/

7、win7中报onnxruntime库相关的错,目前使用的是1.16.0版,需要对其进行手动降至1.14.0版即可解决:
参照方案:https://github.com/microsoft/onnxruntime/issues/16116
执行命令:
pip uninstall onnxruntime
pip install onnxruntime==1.14.0

原创不易,您的关注和点赞就是我前进的动力~文章来源地址https://www.toymoban.com/news/detail-845832.html

到了这里,关于基于华为商城的抢单工具python3.9的selenium webdriver使用及打包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python3爬虫之 Selenium库的使用

    今天在官网看了下Selenium库,总结了下常用的方法,直接上代码。(沈略环境搭建,网上多得是),新手建议去了解10分钟再来看这里的代码。 这里列举一下常用的查找元素方法:其实find_element_by_xpath是万能的。 单元素定位: find_element_by_name find_element_by_id find_element_by_xpath

    2024年02月11日
    浏览(32)
  • Python3+Selenium+Chrome实现自动填写WPS表单

      本文通过python3、第三方python库Selenium和谷歌浏览器Chrome,完成WPS表单的自动填写。   python3的安装:略,网上都有教程。   Selenium的安装:在命令行输入 pip3 install selenium 并回车即可完成安装,如果不成功,查找网上教程。   Chrome的安装:略,网上都有教程。   

    2024年02月01日
    浏览(29)
  • 【记录】Python3|Selenium4 极速上手入门(Windows)

    环境:Windows 版本:python3,selenium 4.11.2 写这个是方便自己重装电脑时重新装 Selenium,懒得每次都重新找链接。 Chrome 和 Edge 或其他浏览器任选其一。 首先,终端运行: 官网下载Chrome:https://www.google.cn/intl/zh-CN/chrome/ 安装好Chrome之后查看Chrome版本:chrome://settings/help 如果Chrome版

    2024年02月07日
    浏览(31)
  • Python3.6+selenium实现操作Frame中的页面元素

    有时网页中会嵌套一个或者多个Frame,此时我们直接去找嵌套在Frame里面的元素会抛出异常,所以在操作的时候我们需要将页面焦点切换到Frame里面,下面我们就以一个实例演示一下! 首先先创建三个html文件,文件代码如下: 1)frameset.html 2)frame_left.html   3)frame_right.html

    2024年01月19日
    浏览(38)
  • 【小5聊】Python3 使用selenium模块实现简单爬虫系列一

    第一次听说Python还是在工作的时候,还是一位女生在用,当时她说可以用来处理excel文档,特别是一些统计分析。第二次让我真正进入python世界,还是在一次C站举办的大赛上。聊聊你是因为什么机缘巧合进入到python圈的呢?不妨留言说说 本期主要是聊聊,我接触到的selenium模

    2024年02月06日
    浏览(58)
  • Python3 Selenium4 chromedriver Pycharm闪退的问题

    Python3版本:3.11.5 Pycharm版本:2023.2.1 Chrome版本:117.0.5938.150(正式版本)  在使用最新版的Selenium4版本时,chromedriver可以驱动Chrome但是闪退,Selenium目前最新版本是4.13.0(Python版) 可能原因: 1.chromedriver版本和Chrome版本不一致导致,chromedriver版本是能下载到的最新版:117.0.5

    2024年02月06日
    浏览(25)
  • 华为机考入门python3--(0)测试题1-句子平均重量

    分类:字符串 知识点: 获取输入 input().strip().split(\\\" \\\") 拼接列表 \\\" \\\".join(list) 输出指定位数的浮点数 print(\\\"%.2f\\\" % value) len() 函数对于很多内置的数据类型都适用,它返回对象的元素个数或长度。 题目来自【华为招聘模拟考试】 注意,不要使用round,有bug by: 软件工程小施同学

    2024年01月22日
    浏览(30)
  • 013-Python3.11.8+selenium4.18.1+Web元素定位大法

    2024现烤现卖热乎的自动化测试之《元素定位大法》最新版本教程 环境配置:         Python版本:Python3.11.8         Selenium版本:Selenium4.18.1         Firfox版本:123.0.1(64位)

    2024年03月20日
    浏览(39)
  • 自动化测试之八大元素定位方式(python3.10+selenium4)

    元素的定位是自动化测试核心。要操作一个对象,首先要识别定位或找到这个对象。为了实现网页整体布局,我们先要知道,一个元素,是如何定位到页面上的某个位置的,这就是元素定位。 系统环境 Windows 11 📌 python3.10.5 🔖 selenium 4.8.0 🚩 注意:以下每种定位方式均有一

    2024年02月03日
    浏览(43)
  • 华为机考入门python3--(0)模拟题2-vowel元音字母翻译

    分类:字符串 知识点: 字符串转list,每个字符成为list中的一个元素    list(string) 字符串变大小写    str.upper(), str.lower() 题目来自【华为招聘模拟考试】 by 软件工程小施同学

    2024年01月22日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包