c# – AutoIT或User32按钮偶尔单击工作
我正在尝试自动化应用程序的测试,并且我遇到了一个我正在努力解决问题的问题.
该应用程序有标准的Windows按钮,我尝试使用AutoIT和User32 DLL单击其中一些按钮.有时按钮被正确点击(耶!),有时它们会失败(嘘!) – 但更糟糕的是,AutoIT确信它点击了按钮(双!!)然后产生误报(三重奏!).当我看到它被说服时,我的意思是它返回点击成功而不是. 我在Win Server 2K8上运行应用程序,除了使用MDI窗口之外,这个应用程序没有什么特别之处,而且一些按钮包含在MDI窗口中.但有些不在MDI窗口内(例如,在创建父窗口之前的登录窗口). 这是我的命令顺序: 在窗口中找到按钮(成功,始终) 其他详情: 有时订单会点击按钮,这应该会打开另一个窗口.该窗口关闭,然后再次点击按钮 – 这一次,没有任何反应.其他时候它按预期工作. 我以管理员身份运行,UAC已完全禁用. 据我所知,这不是一个计时问题,因为我确保按钮是聚焦的,并且在尝试点击它之前启用了按钮,我看到该按钮确实获得了围绕它的聚焦高光. 正如我所提到的,我也只是通过一个简单的User32 / SendMessage调用来尝试这个,这也失败了. 最后,但并非最不重要的是,当我手动与应用程序交互时,这不会发生.我总是有实际的按钮点击工作. 有什么想法吗? UPDATE 这是我应该提到的等式的另一个变量 – 这发生在VM上(因为这是我需要运行它的地方).我可以在自己的机器上进行一些有限的测试,但要获得一些真正的测试,它需要在VM上.点击我自己的开发盒似乎是可靠的,这使得这更令人费解. 我一直在另一台虚拟机上尝试这个,它似乎也在那里工作.至于两个虚拟机,它们运行相同版本的Windows,相同版本的应用程序,相同版本的AutoIT等. 我把它简化为一个细节 – 幸运的是,我无法配置自己,并且必须输入一张票来更改任何配置.配置的不同之处在于: 在无法运行的VM上,设备管理器显示的是vmware鼠标.在正在运行的VM上,设备管理器显示一个PS / 2鼠标的鼠标.显然两者都是软件鼠标,但我现在想知道VMWare鼠标的行为是否有所不同,并且导致按钮点击并不总是有效.我不确定这个解决方案的可能性有多大,因为根据我对它的理解,使用User32 SendMessage调用实际上并不使用鼠标,而是发送鼠标会发送的相同消息,但值得一试… 解决方法
你说你已成功聚焦按钮,所以你试过发送一个空格键事件而不是鼠标点击吗?
Send("{SPACE}") (我认为这是语法.我不是真正的AutoIt常规) 空格键通常可用于与大多数可点击控件交互,例如按钮和复选框.根据我的经验,模拟鼠标点击,甚至ControlClicks,由于奇怪的,不一致的原因,其击键次数远低于击键次数.我的同情. 至于检测单击按钮,可能最简单的方法是让按钮对AutoIT可以检测到的表单进行更改.例如,状态标签在用户按下按钮之前读取就绪.当用户按下按钮时,文本将更改为“处理”.如有必要,您可以使标签不可见(或位于表单边界之外),以便用户无法看到它,但AutoIt可以. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |