工作中python报错处理方法

      报错问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的筛选状态。

                      

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值