下面这段脚本是用于在客户没有任何操作一段时间(以10S为例)后,注销当前登录的用户。但是这段脚本在用户窗口的循环里可以起作用,在循环策略里却不起作用。几次测试发现是!sendkeys("{ENTER}")这个函数在循环策略里调用有问题。我不想在每个窗口都写这个脚本,有没有哪位大神可以指导一下的。
if !strComp(!Trim(!GetCurrentUser()),"") <> 0 then
Temp_无操作时=!TimeSpanGetSeconds(!TimeGetSpan(!TimeGetCurrentTime(),!GetLastMouseActionTime()))
IF (Temp_无操作时间 >= 10) and (V0114用户自动注销时间<>0) THEN
!SendKeys("{ENTER}")
!LogOff()
ENDIF
ENDIF
脚本没问题,模拟测试有问题,谢谢楼下的大神帮忙,11楼有最终脚本,和这个差不多,分享给大家,有问题可以留言
楼主最近还看过
"阿龙" 的回复,发表在8楼
对内容: 【"ozoner" 的回复,发表在6楼 对内容: 【"阿龙" 的回复,发表在5楼 对内容: 【"ozoner" 的回复,发表在3楼 对内容: 【"阿龙" 的回复...】进行回复:
-----------------------------------------------------------------
这就对了了,模拟运行环境不灵的。 基本上从不用模拟环境来测试,除非是简单的逻辑运算。
所有PLC等的模拟软件都不能做到100%的,尤其是当程序中有用到定时相关函数时。 因为这些函数在执行是要调用到硬件的支持,而模拟环境使用的都是windows的资源,无法做到100%的支持。 所以,只要有触摸屏,尽量传到屏里来测试程序。
看下很久以前发一个更简洁的样例的帖子,里面特别说明了:
http://bbs.gongkong.com/d/201808/769225/769225_1.shtml
if !strComp(!Trim(!GetCurrentUser()),"") <> 0 then
Temp_无操作=!TimeSpanGetSeconds(!TimeGetSpan(!TimeGetCurrentTime(),!GetLastMouseActionTime()))
IF (Temp_无操作时间 >= 用户自动注销时间) and (用户自动注销时间<>0) THEN
!SendKeys("{ENTER}")
!LogOff()
ENDIF
ENDIF
这是自动注销的脚本,写在循环策略里面,应该是比较简单的“ 用户自动注销时间”是用来设置注销时间,如果不需要可以把时间写死(比如10秒):
IF (!TimeSpanGetSeconds(!TimeGetSpan(!TimeGetCurrentTime(),!GetLastMouseActionTime()))>=10) THEN
触摸屏测试可用,模拟测试有问题,分享给大家