c#调用Gecko

本文档介绍了在C#环境下,如何利用GeckoFX(基于Firefox内核)来解决IE内核内存消耗问题,进行网页数据抓取。首先确保安装vcredist_x86.exe,然后下载并配置Geckofx和xulrunner SDK。通过NuGet安装Gecko45,最后展示初始化GeckoWebBrowser的代码示例,实现网页加载。

       公司要求采集赛事的整体信息,需要多个网站抓取数据整合。采用ie的内核随着时间的递推,内存消耗越来越多,无奈该用firefox的内核。

       自决心采用Gecko后掉入深坑,调用基础dll都无法加载。通过查找国外网站信息才解决问题,整体流程整理出来,方便以后的同胞采用。

我的开发环境是Visual Studio 2017,windows7 企业版 64位。

1.一定要先安装vcredist_x86.exe,这个是干嘛的现在没时间去查,但是没有这个程序会加载不了dll。

2.下载geckofx-geckofx-33.0.zip

3.下载xulrunner-33.0.en-US.win32.sdk.zip解压xulrunner-33.0.en-US.win32.sdk,然后里面整个bin文件修改名称为xulrunner放入我们的bin文件同级目录下。

4.解决方案在手工把整个xulrunner以文件夹方式加载进入。

5.NuGet使用 ->菜单->工具->NuGet包管理器->管理解决方案的NuGet包程序,打开后搜索并安装Gecko,安装Gecko45

代码:

添加Panel控件System.Windows.Forms.Panel pnlMain;   

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Gecko;

namespace WebTest
{
&

### 如何在C#中引用和配置GeckoDriver以实现自动化测试 要在C#项目中集成并使用 GeckoDriver 实现 Selenium 的 Web 自动化测试,需要完成以下几个方面的设置: #### 1. 安装必要的 NuGet 包 为了在 C# 中使用 Selenium WebDriver 和 GeckoDriver,需通过 NuGet Package Manager 安装以下包: - `Selenium.WebDriver`: 提供核心的 Selenium 功能。 - `Selenium.WebDriver.GeckoDriver`: 提供对 Firefox 浏览器的支持。 可以通过 Visual Studio 或命令行安装这些依赖项。例如,在控制台运行以下命令: ```bash Install-Package Selenium.WebDriver Install-Package Selenium.WebDriver.GeckoDriver ``` 这一步骤确保了项目的开发环境具备所需的库文件[^3]。 --- #### 2. 下载 GeckoDriver 并配置路径 下载适合目标操作系统版本的 GeckoDriver 可执行文件(可以从官方 GitHub 页面获取)。将其放置在一个已知目录下,并将该目录添加到系统的 PATH 环境变量中,或者直接指定其位置给 Selenium 使用。 如果未将 GeckoDriver 添加至全局 PATH,则可以在代码中显式声明驱动程序的位置。例如: ```csharp using OpenQA.Selenium; using OpenQA.Selenium.Firefox; class Program { static void Main(string[] args) { var options = new FirefoxOptions(); // 如果 GeckoDriver 不在 PATH 中,请提供完整路径 string geckoPath = @"C:\path\to\geckodriver.exe"; IWebDriver driver = new FirefoxDriver(geckoPath, options); try { driver.Navigate().GoToUrl("https://www.example.com"); System.Console.WriteLine(driver.Title); } finally { driver.Quit(); // 关闭浏览器实例 } } } ``` 此方法允许开发者精确控制 GeckoDriver 所处的具体位置[^4]。 --- #### 3. 配置隐式与显式等待策略 对于动态加载的内容,合理地应用等待机制至关重要。以下是两种常见的等待方式及其示例代码: ##### 显式等待 当某些元素可能延迟渲染时,推荐采用显式等待逻辑。下面展示了一个等待按钮变为可点击状态的例子: ```csharp var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); IWebElement buttonElement = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.Id("submitButton"))); buttonElement.Click(); ``` 此处利用了 `ExpectedConditions` 类中的预定义条件来判断某个 DOM 节点的状态变化情况[^4]。 ##### 隐式等待 另一种简单的方式是启用全局范围内的隐式超时设定。一旦设置了这个属性之后,每次调用查找元素的操作都会自动附加额外的时间缓冲期用于尝试定位对象。 ```csharp driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5); // 设置最大容忍时间为五秒 ``` 尽管如此,相较于前者而言,这种方式缺乏针对性因而并不总是最佳实践选择[^4]。 --- #### 4. 处理常见问题 - **兼容性问题**: 确认所使用的 GeckoDriver 版本同本地 Firefox 浏览器保持一致;否则可能会引发异常错误提示无法正常启动会话等问题。 - **权限不足**: 若遇到访问受限的情况,请赋予足够的读写许可权予相关二进制文件夹以及临时存储区域。 以上便是关于如何于 .NET Framework/C# 应用程序里边引入并且初始化 GeckoDriver 来开展基于 Selenium 技术框架下的网页端 UI 层面功能性验证工作的指导说明[^3][^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值