Python Fiddler 定时执行脚本错误解决:缺少参数 'success_var' 和 'failure_var'
代码运行出现错误的原因是在调用simulate_shortcut()函数时缺少了success_var和failure_var两个参数。根据代码,simulate_shortcut()函数需要接收这两个参数来更新成功执行和失败执行的次数。因此,在调用simulate_shortcut()函数时,需要将success_var和failure_var作为参数传入。修改代码如下:
def start_fiddler(window, fiddler_path):
if window.running_flag:
messagebox.showinfo('提示', '已经有 Fiddler Classic 启动中,请稍后再试!')
return
if not open_fiddler(fiddler_path):
messagebox.showerror('错误', '无法启动 Fiddler Classic,请检查路径是否正确!')
return
for _ in range(10):
if is_fiddler_window_active():
simulate_shortcut(window.success_var, window.failure_var) # 传入 success_var 和 failure_var
break
time.sleep(1)
window.running_flag = True
在start_fiddler()函数中,将simulate_shortcut()函数的调用修改为simulate_shortcut(window.success_var, window.failure_var),即传入window.success_var和window.failure_var作为参数。
同样的修改也需要在start_script()函数中进行:
def start_script(seconds, countdown_label, success_var, failure_var, window):
global success_count, failure_count
success_count = 0
failure_count = 0
if not seconds.isdigit():
messagebox.showerror('错误', '输入无效,请重新输入整数类型的秒数!')
elif window.stop_flag:
window.stop_flag = False
window.running_flag = True
seconds = int(seconds)
countdown_label.config(text=f'距离下次执行还有 {seconds} 秒')
success_var.set('执行成功0次')
failure_var.set('执行失败0次')
threading.Timer(1, run_script, args=(seconds, countdown_label, success_var, failure_var, window)).start()
elif window.running_flag:
messagebox.showinfo('提示', '已经有倒计时在执行中,请稍后再试!')
else:
seconds = int(seconds)
countdown_label.config(text=f'距离下次执行还有 {seconds} 秒')
success_var.set('执行成功0次')
failure_var.set('执行失败0次')
window.stop_flag = False
window.running_flag = True
threading.Timer(1, run_script, args=(seconds, countdown_label, success_var, failure_var, window)).start()
同样的修改也需要在run_script()函数中进行:
def run_script(seconds, countdown_label, success_var, failure_var, window):
seconds -= 1
if seconds < 0:
seconds = int(window.seconds_var.get())
open_fiddler(window.path_var.get())
simulate_shortcut(success_var, failure_var) # 传入 success_var 和 failure_var
if not window.stop_flag:
countdown_label.config(text=f'距离下次执行还有 {seconds} 秒')
if not window.stop_flag:
threading.Timer(1, run_script, args=(seconds, countdown_label, success_var, failure_var, window)).start()
在这些函数中,都将simulate_shortcut(success_var, failure_var)修改为simulate_shortcut(success_var, failure_var),即传入success_var和failure_var作为参数。
这样修改之后,再次运行代码应该就不会出现缺少参数的错误了。
原文地址: https://www.cveoy.top/t/topic/qg35 著作权归作者所有。请勿转载和采集!