C# 自动化抢购脚本:基于商品链接的实现方案
实现思路:
-
启动参数:
options.AddArgument("start-maximized");
用于启动浏览器时使其窗口最大化。 - 创建 EdgeDriver 实例:
EdgeDriver driver = new EdgeDriver(options);
用于初始化 WebDriver 实例。 - 导航到 URL:
driver.Navigate().GoToUrl("请输入你的商品的URL");
导航到指定的商品页面。 - 创建 WebDriverWait 实例:
WebDriverWait Waittime = new WebDriverWait(driver, TimeSpan.FromSeconds(3600));
用于设置等待时间。 - 等待并获取“加入购物车”按钮:
Waittime.Until(ExpectedConditions.ElementToBeClickable(By.LinkText("加入购物车")));
等待按钮变为可点击并点击。 - 等待并获取“立即购买”按钮: 使用 XPath 查找具有类似文本的按钮。
- 等待并获取“去结算”按钮: 等待并点击“去结算”按钮。
- 退出驱动:
driver.Quit();
用于关闭浏览器并释放资源。根据需要可以启用这行代码。
一、首先引入以下这些包
二、网页标签元素自行修改,根据实际的标签名称来,也可以下载我DEMO直接使用
EdgeOptions options = new EdgeOptions();; EdgeDriver driver; private void Snapped() { // 添加启动参数以使浏览器窗口最大化 options.AddArgument("start-maximized"); // 创建一个新的 EdgeDriver 实例 EdgeDriver driver = new EdgeDriver(options); try { // 导航到指定的商品 URL driver.Navigate().GoToUrl("请输入你的商品的URL"); // 创建一个 WebDriverWait 实例,设置最大等待时间为一个小时 WebDriverWait Waittime = new WebDriverWait(driver, TimeSpan.FromSeconds(3600)); try { // 等待并获取“加入购物车”按钮,直到它变为可点击 IWebElement gowuche_btn = Waittime.Until(ExpectedConditions.ElementToBeClickable(By.LinkText("加入购物车"))); // 点击“加入购物车”按钮 gowuche_btn.Click(); } catch (Exception ex) { // 如果未找到“加入购物车”按钮,记录错误消息 Console.WriteLine("未找到加入购物车按钮,请检查"); } try { // 创建另一个 WebDriverWait 实例,设置最大等待时间为一个小时 WebDriverWait gowuchejiesuan_time = new WebDriverWait(driver, TimeSpan.FromSeconds(3600)); // 等待并获取“立即购买”或类似的按钮,直到它变为可点击 IWebElement actionBtn = gowuchejiesuan_time.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//a[contains(text(), '加入购物车') or contains(text(), '立即购买') or contains(text(), '立即抢购') or contains(text(), '抢购')]"))); // 点击获取到的按钮 actionBtn.Click(); } catch (Exception ex) { // 如果遇到异常,记录错误消息 Console.WriteLine(ex.Message); } try { // 等待并获取“去结算”按钮,直到它变为可点击 IWebElement checkoutBtn = Waittime.Until(ExpectedConditions.ElementToBeClickable(By.LinkText("去结算"))); // 点击“去结算”按钮 checkoutBtn.Click(); } catch (Exception ex) { // 如果遇到异常,记录错误消息 Console.WriteLine(ex.Message); } } finally { // 退出驱动,释放资源(此处已被注释掉,可以根据需要启用) // driver.Quit(); } }