我正在开发使用Selenium的C#程序,并且我想开发一个从Internet Explorer(或任何Internet浏览器)提取某些数据的应用程序。
首先,我尝试创建一个IWebDriver实例
string path = @"C:\Users\ABC\Downloads\";
var options = new InternetExplorerOptions()
{
InitialBrowserUrl = "example.com",
IntroduceInstabilityByIgnoringProtectedModeSettings = true
};
IWebDriver driver = new InternetExplorerDriver(path, options);
此处path是IEDriverServer.exe的保存目录。
但是,运行应用程序时无法打开任何浏览器。我有个例外:
抛出了一个响应为空的异常,该请求将HTTP请求发送到远程WebDriver服务器以获取URL http://localhost:(random端口号(每次更改)/会话。异常的状态为ReceiveFailure,消息为:基础连接已关闭:接收时发生意外错误。
或者,我可以打开个人笔记本电脑上的浏览器,但是“ example.com”属于我公司,因此无法访问个人笔记本电脑上的链接。看来我需要管理员权限才能使用该应用程序自动打开浏览器(不确定)。向员工授予管理员权限是违反公司政策的(因此,我需要找到其他解决方案)。
但是,现在,我正在手动打开浏览器并导航到链接,但是随后我希望该应用程序至少自动从已打开的浏览器中提取数据。我正在尝试使用来访问句柄,
List<Process> proc = Process.GetProcessesByName("iexplore").ToList();
我调试了代码,可以看到proc.ElementAt(0)包含Internet Explorer句柄,但是我无法对该句柄执行任何操作。非常感谢任何有关如何获取“ IWebDriver”以在Internet浏览器上执行操作的帮助。
或使用IWebDriver以外的任何其他方法在浏览器上执行操作的句柄也将有所帮助。