在将键盘键发送到Outlook消息窗口期间,如何避免编码UI中的PlaybackFailureException?
我正在尝试将键盘序列ctrl+c发送到outlook会议表单中的消息字段(ControlType=Client;Name=message),并获取PlaybackFailureException 元素被发现是成功的,我可以在那里发送任何文本,但不能发送键盘键。我尝试了两种方法: 1) 使用修改器:在将键盘键发送到Outlook消息窗口期间,如何避免编码UI中的PlaybackFailureException?,outlook,coded-ui-tests,Outlook,Coded Ui Tests,我正在尝试将键盘序列ctrl+c发送到outlook会议表单中的消息字段(ControlType=Client;Name=message),并获取PlaybackFailureException 元素被发现是成功的,我可以在那里发送任何文本,但不能发送键盘键。我尝试了两种方法: 1) 使用修改器: elements_object.SetFocus(); Keyboard.SendKeys("{A}", ModifierKeys.Control); Keyboard.SendKeys("{C}",
elements_object.SetFocus();
Keyboard.SendKeys("{A}", ModifierKeys.Control);
Keyboard.SendKeys("{C}", ModifierKeys.Control);
elements_object.SendKeys("{^a}");
elements_object.SendKeys("{^c}");
这样只需在字段中键入A,然后键入C。预期的操作未执行(选择+复制)
2) 不带修改器:
elements_object.SetFocus();
Keyboard.SendKeys("{A}", ModifierKeys.Control);
Keyboard.SendKeys("{C}", ModifierKeys.Control);
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的更多信息:
编辑
我尝试了以下代码(可能是快速和肮脏的),它对我有效:
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");
我不知道它到底是如何工作的,但也许它对将来的人会有用。方法是单击此字段,然后所有快捷方式都正常工作。如果不单击,它将无法工作。对不起。有一点误解。我说得不够具体。在我的例子中,我从对象调用的SendKeys()方法只是带有日志记录的包装器,当然在它里面我有通用的键盘。SendKeys(^c),所以在您回复后,我尝试了您的选项:1)
code
Keyboard.SendKeys(^a”);键盘。发送键(“^c”)code
2)code
Keyboard.SendKeys(GetControl(),“^a”);键盘。发送键(GetControl(),“^c”)code
这两个选项都没有抛出任何异常,但也没有执行我预期的操作。看起来什么也没发生。我希望ctrl+a选择控件中的所有文本,然后ctrcl+c复制此选定文本。也许我在这里错了,这是不可能的?看看我的答案,我用代码编辑了我的文章,这些代码对我很有用。