有没有使用webbrowser控件自动化IE * WITHOUT *的方法?

时间:2013-08-15 19:04:16

标签: c# webbrowser-control

我有一个自动化许多业务功能的企业应用程序。我大量使用WebBrowser控件来处理我的所有网站交互(网站抓取,网络应用程序自动化等等)。

我遇到过两个网站,它们只是在WebBrowser控件中 NOT 正确呈现。具体做法是:

  • 美国邮政服务Click-N-Ship网络应用。呈现罚款,直到需要支付邮资为止。即使只是使用鼠标在WebBrowser控件中控制它(没有自动化)也不允许我支付邮费。当我提交页面时,它就会永远挂起。

  • UPS Quantum View管理网络应用程序。此页面甚至不会在WebBrowser控件中加载。永远挂起。

这两个在我的IE10浏览器中渲染得很好。

我已尝试设置注册表项以将呈现引擎从默认IE7更改为IE9。但结果仍然相同。这些Web应用程序的某些内容无法在WebBrowser控件中呈现。

所以....有没有办法从我的C#应用​​程序自动化IE10浏览器?通过发送某种消息?我需要能够点击链接并填写表格数据以获取登录信息等。任何建议赞赏...

1 个答案:

答案 0 :(得分:3)

您可以使用Selenium之类的测试工具来自动化IE。您可以从downloads页面下载IE驱动程序。

使用谷歌的一个简单示例(请务必阅读有关如何使IE驱动程序正常工作的说明):

OpenQA.Selenium.IE.InternetExplorerDriver d = new OpenQA.Selenium.IE.InternetExplorerDriver();
d.Navigate().GoToUrl("http://www.google.com");

d.FindElementByName("q").SendKeys("Stack");
d.FindElementByName("btnK").Click();

WebDriverWait waiter = new WebDriverWait(d, TimeSpan.FromSeconds(10));

waiter.Until(ExpectedConditions.ElementExists(By.CssSelector(".rc .r a")));
// Message the first element
MessageBox.Show(d.FindElementByCssSelector(".rc .r a").Text);