报错问gpt,gpt不行的话百度,还是不行就把脚本粘给gpt逐行请教gpt代码的意思,再自行排查脚本的隐藏错误。
报错内容1
module 'win32com.gen_py.45541000-5750-5300-4B49-4E47534F4655x0x3x0' has no attribute 'CLSIDToClassMap'
报错原因:
运行
import win32com
print(win32com.__gen_path__)
得到路径,删除路径下的文件夹
详见https://blog.csdn.net/weixin_42636075/article/details/133746227
报错内容2
filename=excel.ActiveWorkbook.Name
# 获取当前活动工作表表名
^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'Name'
报错原因:
金山文档自动更新逻辑是将在线文档用本地wps软件打开,python获取当前正在运行的wps应用,读取应用中的数据上传数据库。
报错可能存在情况:
2.1、 首先确保系统是win10,而不是win11,win11无法获取。
2.2、在点击了“用本地wps软件打开”以后鼠标不能点击电脑其他应用,这样会导致无法wps不是当前正在活跃的程序。(鼠标请保持不动等待上传完毕)
2.3、点击了“用本地wps软件打开”以后,如果有其他应用弹窗也会影响。(关闭重试)
2.4、点击了“用本地wps软件打开”以后,网速太慢,表格还在加载中,程序却试图读取数据。(重试几次等待网络通畅或者增加等待时长)
2.5、系统缓存问题,有可能之前关闭的wps一直在后台没彻底结束(结束wps进程或者重启电脑)。
运行一下代码可以结束wps进程,结束后重试,仍不行则重启电脑。
import os
os.system('taskkill /f /im et.exe') # 关闭 WPS表格进程
os.system('taskkill /f /im wps.exe') # 关闭 WPS文字进程
os.system('taskkill /f /im wpp.exe') # 关闭 WPS演示进程
重启电脑后要先打开一下wps软件让wps账号在登录状态,然后关闭wps,运行自动脚本。
报错内容3
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div class="wo-button header-more-btn">...</div> is not clickable at point (94, 18). Other element would receive the click: <div class="loading-page-custom" style="">...</div>
(Session info: chrome=121.0.6167.185)
Stacktrace:
GetHandleVerifier [0x00007FF7AC6E7012+3522402]
(No symbol) [0x00007FF7AC308352]
(No symbol) [0x00007FF7AC1B5ABB]
(No symbol) [0x00007FF7AC203390]
(No symbol) [0x00007FF7AC2010D2]
(No symbol) [0x00007FF7AC1FE834]
(No symbol) [0x00007FF7AC1FD569]
(No symbol) [0x00007FF7AC1F1910]
(No symbol) [0x00007FF7AC21F05A]
(No symbol) [0x00007FF7AC1F120A]
(No symbol) [0x00007FF7AC21F270]
(No symbol) [0x00007FF7AC23BDA3]
(No symbol) [0x00007FF7AC21EE03]
(No symbol) [0x00007FF7AC1EF4D4]
(No symbol) [0x00007FF7AC1F05F1]
GetHandleVerifier [0x00007FF7AC719B9D+3730157]
GetHandleVerifier [0x00007FF7AC76F02D+4079485]
GetHandleVerifier [0x00007FF7AC7675D3+4048163]
GetHandleVerifier [0x00007FF7AC43A649+718233]
(No symbol) [0x00007FF7AC314A3F]
(No symbol) [0x00007FF7AC30FA94]
(No symbol) [0x00007FF7AC30FBC2]
(No symbol) [0x00007FF7AC2FF2E4]
BaseThreadInitThunk [0x00007FFF78CD257D+29]
RtlUserThreadStart [0x00007FFF7AFCAA58+40]
报错原因:
自动脚本的逻辑,python控制浏览器,等待出现某某(页面加载中不会出现的元素,加载成功后才出现的)html元素时(有设置最长等待秒数),进行下一步,即根据设置的xpath进行元素定位并点击操作。由此一步步控制浏览器:金山文档的话,点击用wps打开文件,等待设定秒数后自动关闭浏览器;群辉文档的话,点击下载文件以后,判断下载目录下面是否出现某某文件名.xlsx的文件,出现了则表示下载完成,控制关闭浏览器。
报错可能出现的情况:
3.1 加载过快,元素过快出现,已经进行了点击操作,但是页面却还没加载完毕。(重试,或者手动帮忙点一下按钮)
3.2 网速太慢,超过设置的最长等待秒数,都没找到某某html元素。(等待网络通畅或者更改最长等待时长)。
3.3 网站后台html元素的xpath进行了更改。(更改xpath的值)
打开目标链接,F12进入开发者模式。按以下步骤复制出xpath值,并更改。
其中,
wait.until(EC.element_to_be_clickable((By.ID, 'pcAvatar'))).click()是指点击头像进行快捷登录
如果没显示头像,而是二维码,则需要打开一下wps软件登录wps账号此处才能出现头像实现快捷登录。
3.4 群辉网页元素xpath一般不会变,群辉自动控制的过程中也可以正常使用电脑,因为他不需要获取正在活跃的界面。群辉自动控制师出现此错误一般是页面加载问题,有可能是网速,也有可能是自身鼠标操作抢占了页面控制的鼠标(小概率事件)。重跑一下即可,实在不行就在需要自动控制鼠标点击时,不动鼠标,不会占用很长时间,只需等待10几秒。点击下载文件后,可以正常使用鼠标。群辉需要一定时间(大概2分钟)响应下载操作,才会开始进行下载任务,此非程序问题,无需盯着看。
逻辑依然是:python控制浏览器,等待出现某某(页面加载中不会出现的元素,加载成功后才出现的)html元素时(有设置最长等待秒数),进行下一步,即根据设置的xpath进行元素定位并点击操作。
群辉文档界面的工具栏里面找不到这种(页面加载中不会出现的元素,加载成功后才出现的)有指向性质的元素,所以用了函数框有显示值来判定页面加载完毕,该函数框默认显示左上角的单元格A1的值,有些文档A1单元格没值,会导致一直无法判断页面加载完毕,导致无法进行下一步,超过最长等待时长后直接报错。
因此,针对A1单元格无值的需要提前在A1单元格填内容。有时候这一格也会被别人误删,群辉文档的报错可以检查一下此处。
报错内容4
KeyError: "None of [Index(['款号', '项目'], dtype='object')] are in the [columns]"
找不到该字段,表头字段名被改了,表头字段名多了隐藏的空格、换行符等等。去文件里面更改回来,或者改python需要识别的字段名。
报错内容5
运行python自动化脚本,浏览器还没开始响应,打开一下立马关闭并报错。
浏览器版本问题、python版本问题。自动控制chorme 只适用于113版本,chorme常常自己自动升级了,需要卸载重装113版本。
Python、pycharm、pycharm破解器
链接:https://pan.baidu.com/s/1tzCkqsyuePm4IkkFNUiEyQ?pwd=6jyk
提取码:6jyk
Chorme 113版本
链接:https://pan.baidu.com/s/1hAXjXfAd8LLwsUAltrplgg?pwd=g90h
提取码:g90h
报错内容6
canvas_class = module.FigureCanvas
^^^^^^^^^^^^^^^^^^^
AttributeError: module 'backend_interagg' has no attribute 'FigureCanvas'. Did you mean: 'FigureCanvasAgg'?
解决方案:matplotlib切换图形界面显示终端TkAgg
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
报错内容7
Value must be either numerical or a string containing a wildcard
原因:excel开启了筛选器
方法一:更改openpyxl的版本为3.0.10
#卸载原来的openpyxl
pip uninstall openpyxl
#安装版本为3.0.10的openpyxl
pip install openpyxl==3.0.10
方法二:取消所处理Excel表的筛选状态
更改了openpyxl的版本后仍报错错,手动取消该Excel的筛选状态。