前言
准备好对应版本的浏览器与驱动
这里我放置了对应的 浏览器与驱动,欢迎下载。
链接: https://pan.baidu.com/s/1SpWby5v6OPCxD4BfuNz6bw?pwd=5bse 提取码: 5bse
一、代码问题
需要将chrome浏览器与驱动放置到 代码文件区域,如下:
Browser文件内部:
python
chrome_options = Options()
chrome_options.add_argument("--window-size=1920,960") # 设置浏览器窗口大小
chrome_options.add_argument("--disable-infobars") # 隐藏"Chrome 正在受自动化软件控制"提示
# 1. 浏览器参数初始化
chrome_driver = r"Browser/chromedriver.exe" # 浏览器驱动,注意,这里一定是相对于你当前代码的路径
chrome_app = r"Browser/chrome.exe" # 浏览器
chrome_driver = ExeUtils.get_resources(chrome_driver)
chrome_app = ExeUtils.get_resources(chrome_app)
chrome_options.binary_location = chrome_app # 添加浏览器
if getattr(sys, 'frozen', False):
print("已从exe包中加载chromedriver")
# 从exe包里找chromedriver依赖驱动的情况
chromedriver_path = os.path.join(sys._MEIPASS, "Browser/chromedriver.exe")
service = Service(chromedriver_path)
self.driver = webdriver.Chrome(service=service, options=chrome_options)
else:
# 普通情况下从本地文件路径找依赖的情况
print("已从本地文件路径加载chromedriver")
service = Service(chrome_driver)
self.driver = webdriver.Chrome(service=service, options=chrome_options)
## 这段直接抄的别人的
class ExeUtils:
"""exe生成相关工具类"""
@staticmethod
def get_resources(path):
"""
获取实际的资源访问路径(本地||临时)
根据打包生成的临时目录访问资源
或者直接运行脚本获取本地访问资源
:param path:
:return:
"""
if getattr(sys, 'frozen', False):
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")
return os.path.join(base_path, path)
打包问题
需要将所有的浏览器文件与驱动打包。
注意这里:绝对路径\Browser是刚刚圈起来的文件夹,要把文件夹全部打包进来。
python
pyinstaller --onefile --windowed --icon=Helper.ico --hidden-import=selenium --add-data="绝对路径\Browser;Browser" Browser.py

结语
如果有问题需要欢迎咨询,有讲解的不清楚的可以评论或者私信告诉我。