好的,所以我在WatiN中运行测试,我正在使用SendKeys方法。根据MSDN网站,我可以输入:
System.Windows.Forms.SendKeys.SendWait("{LEFT 2}");
这将进入左侧两次。但这不起作用,我相信因为应用程序需要每次按键之间的时间。我命令做我需要的程序,我在每个按键之间使用Thread.Sleep以确保它们被读取。 是否有更有效/正确的方法来执行此操作?这是我当前的方法代码:
System.Windows.Forms.SendKeys.SendWait("{LEFT}");
Thread.Sleep(500);
System.Windows.Forms.SendKeys.SendWait("{LEFT}");
Thread.Sleep(500);
System.Windows.Forms.SendKeys.SendWait("{ENTER}");
答案 0 :(得分:3)
不幸的是,我不相信有。根据{{3}},SendKeys存在时间问题:
SendKeys类容易受到时序问题的影响 开发人员不得不解决。更新后的实施是 仍然容易受到计时问题的困扰,但可能会稍快一些 需要更改变通方法。
SendKeys类尝试使用 先前的实现,如果失败,则使用新的 实现。
因此,SendKeys类可能表现不同 在不同的操作系统上。 另外,当SendKeys类时 使用新的实现,SendWait方法不会等待 将消息发送到另一个进程时要处理的消息。如果 无论如何,您的应用程序都依赖于一致的行为 在操作系统中,可以强制SendKeys类使用新的 通过将以下应用程序设置添加到您的实现 app.config文件。
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
要强制SendKeys类使用先前的实现,请使用值“JournalHook”。
您可以尝试在实施之间进行更改,以查看结果是否发生了变化。
或者,根据此MSDN,只需在输入后使用Thread.Sleep(0);
即可。不是最优雅的解决方案,但如果它工作,它将比500毫秒暂停更快。