C# 自动化抢购脚本:基于商品链接的实现方案

news2024/11/16 5:41:38

实现思路:

  1. 启动参数options.AddArgument("start-maximized"); 用于启动浏览器时使其窗口最大化。
  2. 创建 EdgeDriver 实例EdgeDriver driver = new EdgeDriver(options); 用于初始化 WebDriver 实例。
  3. 导航到 URLdriver.Navigate().GoToUrl("请输入你的商品的URL"); 导航到指定的商品页面。
  4. 创建 WebDriverWait 实例WebDriverWait Waittime = new WebDriverWait(driver, TimeSpan.FromSeconds(3600)); 用于设置等待时间。
  5. 等待并获取“加入购物车”按钮Waittime.Until(ExpectedConditions.ElementToBeClickable(By.LinkText("加入购物车"))); 等待按钮变为可点击并点击。
  6. 等待并获取“立即购买”按钮: 使用 XPath 查找具有类似文本的按钮。
  7. 等待并获取“去结算”按钮: 等待并点击“去结算”按钮。
  8. 退出驱动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();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2076467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详谈进程等待

目录 前言1. 进程等待的必要性1.1 进程等待的定义 2. 如何进行进程等待2.1 wait 单进程2.2 wait 多进程2.3 status && 退出情况2.3.1 status 参数构成2.3.2 简证 status 参数构成2.3.3 进程等待失败2.3.4 宏调用查看退出信息 3. 进程等待的原理 前言 本篇文章继上一篇…

一款免费且功能强大的图像查看和编辑软件

IrfanView是一款免费且功能强大的图像查看和编辑软件,以其小巧的体积、快速的运行速度和丰富的功能而闻名。它不仅支持多种图像格式,如JPEG、PNG、BMP、GIF等,还支持视频和音频文件的播放。 IrfanView的主要特点包括: 广泛的文件…

Tomcat启动过程是怎么样的?

一、Tomcat 启动流程 步骤: 1、启动tomcat,需要调用 bin/startup.bat (在linux 目录下,需要调用 bin/startup.sh),在startup.bat 脚本中,调用了catalina.bat。 2、在catalina.bat 脚本文件中,调用了BootS…

【栈与递归】-------简单了解

1.递归的定义: 若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的 例如: 链表的结构,树的结构等等 若一个过程直接地或间接地调用自己, 则称这个过程是递归的过程。 例如&#xf…

不确定性环境下的自动驾驶汽车行为决策方法

在高度交互的复杂驾驶环境中考虑不确定性因素的影响,做出合理的决策,是当前决策规划系统须解决的主要问题之一。本文提出了一种不确定性环境下的自动驾驶汽车行为决策方法,为消除不确定性的影响,将行为决策过程转化为部分可观察马…

如何使用ssm实现基于jsp的快递管理系统的开发

TOC ssm226基于jsp的快递管理系统的开发jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规…

达梦数据库的系统视图v$db_object_cache

达梦数据库的系统视图v$db_object_cache 达梦数据库(DM Database)中的 V$DB_OBJECT_CACHE 视图提供了数据库对象缓存的相关信息。这些信息包括缓存中的各种数据库对象(如表、索引、存储过程等)的具体状态和属性。通过 V$DB_OBJEC…

基于SpringBoot的滴答拍摄影项目

你好,我是计算机专业的学生,专注于摄影项目的开发与实现。如果您对我的项目感兴趣或有任何建议,欢迎随时联系我。 开发语言 Java 数据库 MySQL 技术 SpringBoot框架 工具 MyEclipse、Tomcat服务器 系统展示 首页 管理员功能模块 用…

网络安全-安全渗透简介和安全渗透环境准备

文章目录 前言1. 安全渗透简介1.1 什么是安全渗透?1.2 安全渗透所需的工具1.3 渗透测试流程 2. 使用 Kali Linux 进行安全渗透2.1 下载ISO镜像2.2 下载VMware Workstaion软件2.3 Kali Linux简介2.4 准备Kali Linux环境2.5 Kali Linux初始配置2.6 VIM鼠标右键无法粘贴…

石碑文字全排列重组(华为od机考题)

一、题目 1.原题 有一个考古学家发现一个石碑, 但是很可惜,发现时其已经断成多段, 原地发现n个断口整齐的石碑碎片。 为了破解石碑内容, 考古学家希望有程序能帮忙计算复原后的石碑文字组合数, 你能帮忙吗&#xff1…

C# 三种定时器的用法

目录 1.System.Timers.Timer 2.System.Windows.Forms.Timer 3.System.Threading.Timer 4.简单的封装 这里介绍三种常用的定时器,方便查阅资料或直接复制使用。 1.System.Timers.Timer System.Timers.Timer 类定义了一个计时器,该计时器按固定间隔触…

大二必做项目贪吃蛇超详解之上篇win32库介绍

文章目录 1. 游戏背景2. 游戏效果演示3. 项目目标4. 前置知识5. Win32 API5. 1 控制台程序(Console)5. 2 控制台屏幕上的坐标 COORD5. 3 GetStdHandle5. 4 GetConsoleCursorlnfo5. 4. 1 CONSOLE_CURSOR_INFO5. 4. 2 SetConsoleCursorlnfo 5. 5 SetconsoleCursorPosition5. 6 Ge…

“汤姆猫除了不会捉杰瑞啥都会”之作为Web服务器,tomcat的常用部署方式 (Tomcat+memcached实现高可用)

目录 企业级WEB应用服务器TOMCAT一、tomcat的功能介绍1.1 安装 Tomcat1.2 tomcat的文件结构和组成1.3 生成tomcat的启动文件 二、结合反向代理实现tomcat部署2.1 常见部署方式介绍2.2 利用 nginx 反向代理实现2.3 实现tomcat中的负载均衡2.3.1 HTTP的无状态,有连接和…

Linux驱动学习之中断与等待队列

本篇分为设备树部分和API接口部分 设备树 想要使用中断,设备树中需要有两个属性: interrupts // 表示要使用哪一个中断, 中断的触发类型等等。 interrupt-parent // 这个中断要接到哪一个设备去? 即父中断控制器是谁 父中…

一种更快成像的新技术

斯旺西大学(Swansea University)的研究人员为中性原子束显微镜创造了一种新的成像方法,可大大加快显微镜图像的获取速度。中性原子束显微镜已成为科学研究的一个重点,因为它能够对商用显微镜无法成像的表面进行成像,例…

mysql集群从零开始搭建

文章目录 MySQL集群linux下部署mysqlmysql主从复制master配置配置slave新的slave加入延迟复制慢查询多线程原理 半同步模式原理gat模式启动半同步模式 mysql高可用之组复制(MGR)实现mysql组复制 mysql路由具体实现 mysql高可用之MHAMHA部署实施安装MHA软…

Codeforces Round 968 (Div. 2 ABCD1D2题) 视频讲解

A. Turtle and Good Strings Problem Statement Turtle thinks a string s s s is a good string if there exists a sequence of strings t 1 , t 2 , … , t k t_1, t_2, \ldots, t_k t1​,t2​,…,tk​ ( k k k is an arbitrary integer) such that: k ≥ 2 k \ge 2 k≥…

接口自动化测试利器,使用Rest Assured进行REST API测试

我们在做接口测试时,一般在代码中会使用HttpClient,但是HttpClient相对来讲还是比较麻烦的,代码量也相对较多,对于新手而言上手会比较难一点,今天我们来看下另一个接口测试工具包REST Assured REST Assured是一个流行…

Blazor官方文档学习记录

Blazor官方文档学习记录 1 官方文档2 Blazor教程-生成首个应用3 项目结构4 基础知识4.1 生态4.2 Razor组件指令顺序4.3 Razor组件的初始化方法 5 注意 1 官方文档 https://dotnet.microsoft.com/zh-cn/apps/aspnet/web-apps/blazor2 Blazor教程-生成首个应用 https://dotnet.…

Python | Linux | 解析Himawari-8/9 | Standard Data

写作前面 之前一个相关的工作需要解析Himawari-8/9 Standard Data文件,因为他是二进制的,之前没有处理过,导致完全摸不着头脑。在网上找了中英文搜索找了好久,虽然也找到了公开的解析代码,但是放在自己的数据这感觉总是…