C#:System.Windows.Forms.SendKeys.SendWait不能作为输入使用路径

时间:2015-01-06 21:41:39

标签: c# string upload coded-ui-tests sendkeys

这是我的代码

private string path = Path.GetTempPath() + "Test.pdf";
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
System.Windows.Forms.SendKeys.SendWait(path);
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;
Keyboard.SendKeys("{Enter}");

有一个用于打开文件的窗口浏览器。该文件存在于临时路径中。它有时会起作用,有时它会以:\Users\....的形式进入路径,这意味着它会忽略C。我不确定是什么问题?为什么它不一致?任何帮助表示赞赏。

我已经尝试了

private string path = @"" + Path.GetTempPath() + "Test.pdf";

但它是相同的(有时是有效的,有时不是)

我在路径

之前添加了空字符
private string path = @" " + Path.GetTempPath() + "Test.pdf";

但它仍然是一样的!

2 个答案:

答案 0 :(得分:1)

尝试使用

Path.Combine(Path.GetTempPath(), "Test.pdf")

答案 1 :(得分:1)

我遇到了与Coded UI类似的问题,但它在整个字符串中随机省略了少量字符。我从来没有发现真正的原因,但我通过一次发送一个字符并在它们之间短暂停顿来解决问题。我使用类似于以下代码:

void SendKeysSlowly(string text)
{
    foreach ( char s in text )
    {
        SendKeys(s); // Choose the appropriate send routine
        System.Threading.Thread.Sleep(50); // Milliseconds, adjust as needed
    }
}

另外,您应该确保字符串始终以“C:”开头?您可以在第一次Assert(path.StartsWith("C:\\"));来电之前添加...Sendkeys表单的代码。