如何在将键盘键发送到 Outlook 消息 Window 期间避免编码 UI 中的 PlaybackFailureException?
How to avoid PlaybackFailureException in coded UI during sending keyboard keys to Outlook Message Window?
我正在尝试将键盘序列 ctrl+c 发送到 outlook 会议表单中的消息字段 (ControlType=Client;Name=Message) 并获取 PlaybackFailureException。
元素已成功找到,我可以向其发送任何文本,但不能发送键盘键。我尝试了两种方法:
1) 使用修饰符:
elements_object.SetFocus();
Keyboard.SendKeys("{A}", ModifierKeys.Control);
Keyboard.SendKeys("{C}", ModifierKeys.Control);
这样只需在字段中键入 A,然后键入 C。我期望的操作没有执行(选择 + 复制)
2) 无修饰符:
elements_object.SendKeys("{^a}");
elements_object.SendKeys("{^c}");
这种方式抛出异常 PlaybackFailureException 。
有趣的是:例如发送 {ENTER} 是有效的。
伙计们,我做错了什么?
如果要执行Ctrl+A,使用
Keyboard.SendKeys("^a");
要执行 Ctrl + C,
Keyboard.SendKeys("^c");
如果您想传递控制权,sendkeys 必须执行:
Keyboard.SendKeys(UITestControl, "^c");
查看此处以了解有关 SendKeys 的更多信息:MSDN SendKeys
编辑
我试过下面的代码(可能很快但很脏),它对我有用:
WinWindow outlook = new WinWindow();
outlook.SearchProperties.Add(WinWindow.PropertyNames.Name, "Untitled - Meeting ");
WinClient doc = new WinClient(outlook);
doc.SearchProperties.Add(WinWindow.PropertyNames.Name, "Document1");
WinClient msg = new WinClient(doc);
msg.SearchProperties.Add(WinWindow.PropertyNames.Name, "Message");
Keyboard.SendKeys(msg, "^a");
Keyboard.SendKeys(msg, "^c");
// I tried pasting it, it pastes same content whatever is copied.
Keyboard.SendKeys(msg, "^v");
我不知道它到底是如何工作的,但也许它对将来的人有用。方法是单击此字段,然后所有快捷方式都可以正常工作。不点击是不行的。
我正在尝试将键盘序列 ctrl+c 发送到 outlook 会议表单中的消息字段 (ControlType=Client;Name=Message) 并获取 PlaybackFailureException。
元素已成功找到,我可以向其发送任何文本,但不能发送键盘键。我尝试了两种方法:
1) 使用修饰符:
elements_object.SetFocus();
Keyboard.SendKeys("{A}", ModifierKeys.Control);
Keyboard.SendKeys("{C}", ModifierKeys.Control);
这样只需在字段中键入 A,然后键入 C。我期望的操作没有执行(选择 + 复制)
2) 无修饰符:
elements_object.SendKeys("{^a}");
elements_object.SendKeys("{^c}");
这种方式抛出异常 PlaybackFailureException 。
有趣的是:例如发送 {ENTER} 是有效的。
伙计们,我做错了什么?
如果要执行Ctrl+A,使用
Keyboard.SendKeys("^a");
要执行 Ctrl + C,
Keyboard.SendKeys("^c");
如果您想传递控制权,sendkeys 必须执行:
Keyboard.SendKeys(UITestControl, "^c");
查看此处以了解有关 SendKeys 的更多信息:MSDN SendKeys
编辑
我试过下面的代码(可能很快但很脏),它对我有用:
WinWindow outlook = new WinWindow();
outlook.SearchProperties.Add(WinWindow.PropertyNames.Name, "Untitled - Meeting ");
WinClient doc = new WinClient(outlook);
doc.SearchProperties.Add(WinWindow.PropertyNames.Name, "Document1");
WinClient msg = new WinClient(doc);
msg.SearchProperties.Add(WinWindow.PropertyNames.Name, "Message");
Keyboard.SendKeys(msg, "^a");
Keyboard.SendKeys(msg, "^c");
// I tried pasting it, it pastes same content whatever is copied.
Keyboard.SendKeys(msg, "^v");
我不知道它到底是如何工作的,但也许它对将来的人有用。方法是单击此字段,然后所有快捷方式都可以正常工作。不点击是不行的。