LinkedIn求职脚本中PyAutoGUI抛出TypeError,求助故障原因
解决PyAutoGUI调用时的TypeError: int() argument must be a string... not 'NoneType'问题
这个错误我之前处理过,本质是你的LinkedIn申请程序在调用PyAutoGUI的坐标相关函数(比如click()、moveTo())时,传入了None作为x或y参数,导致PyAutoGUI内部把None转成整数时触发了报错。既然你不能修改PyAutoGUI的代码,那我们从调用它的业务代码入手解决:
排查步骤和解决方案
1. 定位所有调用PyAutoGUI的代码
先找到程序里所有使用PyAutoGUI的位置,重点关注那些需要传入坐标的函数,比如:
pyautogui.click(x, y)pyautogui.moveTo(x, y)pyautogui.doubleClick(x, y)
检查这些函数的x、y参数来源,看看是不是某个获取坐标的逻辑返回了None(比如图像识别没找到目标元素,或者DOM元素定位失败)。
2. 给坐标参数增加非空校验
在调用PyAutoGUI函数之前,先判断x和y是否为有效值,避免把None传进去。示例代码如下:
# 假设原来的代码是这样的 apply_btn_x, apply_btn_y = get_application_button_coords() # 这个函数可能返回None pyautogui.click(apply_btn_x, apply_btn_y) # 修改后的代码,增加非空判断 apply_btn_x, apply_btn_y = get_application_button_coords() if apply_btn_x is not None and apply_btn_y is not None: pyautogui.click(apply_btn_x, apply_btn_y) else: print("⚠️ 未找到职位申请按钮的坐标,跳过本次申请操作")
3. 修复坐标获取的逻辑
如果坐标是通过图像识别(比如pyautogui.locateOnScreen())获取的,很可能是识别失败返回了None,你可以优化这个逻辑:
- 增加置信度参数(需要先安装
opencv-python:pip install opencv-python),降低识别的严格程度 - 增加超时等待,给页面足够的加载时间
- 检查目标图像是否和屏幕上的元素完全匹配(比如有没有被弹窗遮挡,或者页面元素样式变化了)
示例优化后的图像识别代码:
import pyautogui try: # 增加置信度,设置超时等待10秒 btn_location = pyautogui.locateOnScreen('apply_button.png', confidence=0.8, timeout=10) if btn_location: apply_btn_x, apply_btn_y = pyautogui.center(btn_location) else: apply_btn_x, apply_btn_y = None, None except pyautogui.ImageNotFoundException: apply_btn_x, apply_btn_y = None, None print("⏰ 超时未找到申请按钮,请检查页面状态")
4. 用硬编码坐标做测试验证
如果不确定问题出在哪,可以先临时用一个确定有效的坐标(比如屏幕中间的位置)调用PyAutoGUI,验证函数本身能正常运行:
# 替换成你屏幕上的有效坐标,比如1920x1080屏幕的中间位置 pyautogui.click(960, 540)
如果这个调用能成功,就说明问题确实出在你的坐标获取逻辑上,而不是PyAutoGUI本身的安装问题。
内容的提问来源于stack exchange,提问作者ronnieotieno
相关产品推荐
相关产品推荐

