C#中的SendKeys类

时间:2009-07-15 16:12:16

标签: c# .net sendkeys

我有一个c#程序,它使用Process类启动Internet Explorer并转到URL。

然后将特定字符串发送到该页面的搜索框,复制返回结果的整个屏幕并进行处理。

我遇到的问题是:

我使用SendKeys.SendWait(“abc”)将字符串发送到Internet Explorer中的页面(活动窗口)。当程序运行时,我看到页面上填充的内容有时是“bc”,有时是“abbc”,有时是“abcc”,有时是正确的“abc”。每次运行看起来完全不同。这个问题发生在我测试的多台机器上。但是在我自己的机器上,我最初开发它的时候,我从未见过它 - 只有当我在其他机器上测试它时(所有运行的XP)。

我在SendWait语句之间延迟处理随机时间问题,但我是否相信即使在相同的SendWait语句中也存在问题?

需要帮助。感谢。

1 个答案:

答案 0 :(得分:1)

如果您试图获取网页的来源,那么我建议使用类似

的内容
WebClient client = new WebClient();
client.DownloadString("http://mypage");

如果您试图抓取在页面上呈现的文本,那么我建议您查看HtmlAgilityPack,它可以让您更轻松地抓取页面内容并使其更具体。 或者,您可以使用RegEx来选择div标签之间的文本:

RegEx textSelector = new RegEx("<div>([^<]+?)</div>");
string pageText = "";
foreach(var match in textSelector.Matches(myHtml))
    pageText += match.Groups[0].Value;

警告,该代码是在我的头顶编写的,未经测试,并且可能会导致嵌套标记的一些非常随机的结果:)