布尔表达式解析出错(已直接返回False),请调试运行后根据提示修复。

使用问题 · 260 次浏览
『扪』 创建于 2025-01-02 19:46

如题,想请教一下大佬,表单点击【保存】或者【取消】偶尔会触发这个提示,有点想不通它出现的原因。。。


瞑空凌 2025-01-02 21:36 :

有样例吗?一般出现这类问题是如果的判断语句内不合规.  我之前遇到的一般是忘了提前注册类型,导致类型不存在,以及以为获取到了对应的数据,然后在判断时并不是想象那样,导致判断不合法.

『扪』 回复 瞑空凌 2025-01-02 21:39 :

Kimi - by 『扪』 - 动作信息 - Quicker

https://getquicker.net/Sharedaction?code=a0c096c6-4bda-4cdb-b5f5-08dd165d6719

运行这个动作的子程序:【 模型】,就会偶发报错😂太底层的东西我实在搞不懂。

瞑空凌 回复 『扪』 2025-01-02 21:42 :

我测试看看,一般这个不涉及底层,只是Quicker不对有些报错阐明具体原因

『扪』 回复 瞑空凌 2025-01-02 21:44 :

好的,辛苦大佬了~,要不是大佬发布的示例动作,还真不知道怎么实现这种高端功能👍

瞑空凌 回复 『扪』 2025-01-02 22:13 :

🤦‍♂️败北,😂没测试出来,多次运行均未报错,也没发现有类型上的问题.语法上也没看到问题,
表单勾选了取消后停止,那么点击取消会停止整个动作执行,不过操作窗因是非等待,所以不受影响.关于Cancel的判断一般是在没有勾选取消后停止时使用.
这个是一般没注意想到😁,我最开始发的示例动作是反射窗口获取,更麻烦🤣🤦‍♂️,

『扪』 回复 瞑空凌 2025-01-02 22:17 :



反复的切换模型后,【点击保存】就会偶发报错,有时候【点击取消】也会报错,甚至直接启动有几次也报错了。。。

『扪』 最后更新于 2025-01-02 22:19
瞑空凌 回复 『扪』 2025-01-02 22:21 :

依旧没遇到🤦‍♂️😂
有个思路,你试试用一个步骤组包裹,然后输出信息,在后面判断是否报错,如果报错就运行断点,然后你再在这断点来调试表达式?
示例:简易版步骤断点查看 - by 瞑空凌 - 动作信息 - Quicker

瞑空凌 最后更新于 2025-01-02 22:22
瞑空凌 回复 『扪』 2025-01-02 22:24 :

测试取消的话,要把表单的取消停止关了,不然一点取消整个执行全部停了,就没法调试了

『扪』 回复 瞑空凌 2025-01-02 22:24 :

好的,我得研究看看怎么用

瞑空凌 回复 『扪』 2025-01-02 22:29 :


大概是这样用,我这里实在测试不出报错,没法找原因


『扪』 回复 瞑空凌 2025-01-02 22:33 :






『扪』 最后更新于 2025-01-02 23:15
『扪』 回复 『扪』 2025-01-02 22:42 :

搞错了,断点没放进步骤组里😂

『扪』 2025-01-02 22:47 :



『扪』 最后更新于 2025-01-02 22:47
回复内容
『扪』 2025-01-02 22:47
#1



『扪』 最后更新于 2025-01-02 23:09
『扪』 回复 『扪』 2025-01-02 23:09 :


『扪』 最后更新于 2025-01-02 23:10
瞑空凌 回复 『扪』 2025-01-03 00:52 :

😁才下班回来,之前忙没看信息,抱歉

『扪』 2025-01-02 23:10
#2

这样放设置断点,对吗?


『扪』 最后更新于 2025-01-02 23:10
『扪』 回复 『扪』 2025-01-02 23:12 :

这个在 第一个循环 的断点报错了一次,第二个循环没有报错

瞑空凌 回复 『扪』 2025-01-03 00:50 :

对啊

瞑空凌 回复 『扪』 2025-01-03 00:50 :

代码调试是啥情况?变量值有没问题?

『扪』 回复 瞑空凌 2025-01-03 00:56 :

【点确认】也还是报错,但是不会触发断点,搞不懂了,最后【点取消】也会报错

『扪』 最后更新于 2025-01-03 01:01
瞑空凌 回复 『扪』 2025-01-03 01:02 :
那直接加入断点,然后把相关的布尔表达式复制到断点内调试,看看是哪个返回出错
先在第一个循环测试看看
瞑空凌 回复 『扪』 2025-01-03 01:03 :

按逻辑,如果布尔表达式出错的情况下,断点由于是同样环境,应该可以测试出相同问题

瞑空凌 回复 『扪』 2025-01-03 01:05 :

如果还是不行,那就把布尔表达式写道赋值步骤,赋值给布尔变量,再在如果使用该变量。赋值步骤如果解析失败,记得是能直接看到的,到时判断看看是哪个赋值内的出错了。

『扪』 回复 瞑空凌 2025-01-03 01:06 :

第一个循环好像没有布尔判断表达式诶

『扪』 最后更新于 2025-01-03 01:07
瞑空凌 回复 『扪』 2025-01-03 01:07 :

所有如果内的,以及循环里的中止,都是布尔表达式

瞑空凌 回复 『扪』 2025-01-03 01:09 :

我以前类似报错基本都是循环的中止表达式,或者如果内的表达式,看着没问题,但都要试试才知道为啥有问题。有时先禁用一些步骤,再执行看看是否报错,来对比

瞑空凌 回复 『扪』 2025-01-03 01:10 :
都测试啊,或者你先禁用这个如果,避免干扰判断
瞑空凌 回复 『扪』 2025-01-03 01:11 :

想了想,的确,禁用更直观,一步步启用,如果哪个启用后报错,那么必定和其相关

『扪』 回复 瞑空凌 2025-01-03 01:13 :

好,那就一步步禁用


『扪』 回复 瞑空凌 2025-01-03 01:27 :

算了,不折腾了,反正也搞不懂为啥😁


『扪』 最后更新于 2025-01-03 01:30
瞑空凌 回复 『扪』 2025-01-03 01:30 :

😂,那再测试删一部分表达式,看看是哪部分报错



瞑空凌 回复 『扪』 2025-01-03 01:30 :

就可以得出哪里需要改一下

『扪』 回复 瞑空凌 2025-01-03 01:32 :

可是,现在都没有报错了,还用删啥

瞑空凌 回复 『扪』 2025-01-03 01:33 :

我的意思是中止条件再填回去,然后去除一部分的表达式,你这不是有两个吗?||你删一个,看看是哪个的问题

『扪』 回复 瞑空凌 2025-01-03 01:38 :

OK,找到罪魁祸首了,就是下面这条表达式存在就会概率报错:

$= {button}.IndexOf("Cancel", StringComparison.OrdinalIgnoreCase) >= 0

『扪』 回复 瞑空凌 2025-01-03 01:40 :

第二个循环的中止条件我就不填了,反正是任意一个线程结束就退出,对吧?

『扪』 最后更新于 2025-01-03 01:40
瞑空凌 回复 『扪』 2025-01-03 01:42 :

这个是任何一个线程结束就会运行后面的步骤,因此后面的步骤赋值就是用来控制中止条件的

瞑空凌 回复 『扪』 2025-01-03 01:44 :

大概率{button}返回的可能不是字符串类型

『扪』 回复 瞑空凌 2025-01-03 01:47 :

啊,这! 那第二个循环不应该会结束的啊,中止条件都被去掉了

『扪』 最后更新于 2025-01-03 01:48
瞑空凌 回复 『扪』 2025-01-03 01:48 :

你把表单的取消后停止开起来,就完全不需要中止条件,这个会把执行全部停止

『扪』 回复 瞑空凌 2025-01-03 01:51 :

表单的取消后停止好像优先级比较低,如果是用户输入模块的取消后停止真的会停止整个动作(这个是实测)

『扪』 最后更新于 2025-01-03 01:51
瞑空凌 回复 『扪』 2025-01-03 01:52 :

WaitAny模式是指,任何一个线程结束后就执行后面的步骤,之前没结束的线程继续执行

瞑空凌 回复 『扪』 2025-01-03 01:53 :

刚刚测试了你那动作,表单的取消后停止可以整个停止

瞑空凌 回复 『扪』 2025-01-03 01:54 :

实在不行直接在最后面放个停止模块😂

『扪』 回复 瞑空凌 2025-01-03 01:55 :

但是我不想是取消后停止整个动作,动作还有一些后面交互流程

『扪』 回复 『扪』 2025-01-03 01:57 :

那我把表单的取消后停止关了,在第二个循环哪里加一个中止条件



『扪』 最后更新于 2025-01-03 01:57
瞑空凌 回复 『扪』 2025-01-03 01:57 :

理解了,那就变量控制即可,把报错的表达式移除就行 保留后面那个变量

『扪』 回复 瞑空凌 2025-01-03 01:58 :

辛苦大佬了,今晚就研究到这吧,晚安~

瞑空凌 回复 『扪』 2025-01-03 01:59 :

就是否退出这个变量就够了,WaitAny模式下会执行最后的那个赋值,然后就会自然退出了

瞑空凌 回复 『扪』 2025-01-03 01:59 :

兄台晚安😁

『扪』 回复 瞑空凌 2025-01-03 02:00 :

了解

回复主贴