0


使用Java基于selenium实现淘宝秒杀自动化

前言

无意在论坛刷到了基于Python实现淘宝秒杀的小demo,觉得挺有意思的,就用Python写了一下

# 淘宝清空购物车装置import time

# 新版的selenium和老版的有区别,坑死我了from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

ShoppingTime ="19:00"# 先登录
driver.get("https://login.taobao.com/member/login.jhtml?f=top&redirectURL=http%3A%2F%2Fwww.taobao.com%2F/")
time.sleep(15)# 进入购物车
driver.get("https://cart.taobao.com/cart.htm?from=mini&ad_id=&am_id=&cm_id=&pm_id=1501036000a02c5c3739")

time.sleep(2)# 选中全选all= driver.find_element(By.XPATH,'/html/body/div[1]/div[3]/div/div/div[2]/div[1]/div/div[''1]/div/div/label')ifall:all.click()

time.sleep(1)
buy = driver.find_element(By.XPATH,'/html/body/div[1]/div[3]/div/div/div[4]/div[2]/div[3]/div[5]/a')

后来写时间判断的时候发现时间格式要转来转去的,Python是真的不熟,想到openqa好像也有selenium,就试一下用Java去写,简单搜了一下用Java写这个的真不多,自己折腾一下咯,不过涉及到爬虫还是推荐用Python去当主语言写,库多教程也多,少走弯路。

第一步 安装ChromeDriver

默认大家都用Chrome咯,下载地址:

https://sites.google.com/a/chromium.org/chromedriver/home

因为我是mac环境,下好chromedriver之后直接拷贝在/usr/local/bin下就行啦
在这里插入图片描述
拷贝的时候注意需要管理员权限,按个指纹就完了
也可以放在其他位置,写Java的时候用代码配一下就行

System.setProperty("webdriver.chrome.driver","/Users/beamstark/Desktop/chromedriver");

第二步 导包

默认大家都用Maven

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.14.0</version></dependency><!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.0-jre</version></dependency>

第三步 测试

还是Java顺手,简单写个demo试一下

packagecom;importorg.openqa.selenium.chrome.ChromeDriver;/**
 * @author BeamStark
 * @date 2022-10-08-08:58
 */publicclass TEST {publicstaticvoidmain(String[] args){ChromeDriver chromeDriver =newChromeDriver();
        chromeDriver.get("https://www.baidu.com");
        chromeDriver.findElementById("kw").sendKeys("啦啦啦");
        chromeDriver.findElementById("su").click();}}

点击运行
在这里插入图片描述
bingo~
但是这个时候控制台会报错(无伤大雅)
在这里插入图片描述
说的好像是不安全之类的,只能本地运行,mac的权限始终没有搞明白 :(
在这里插入图片描述

第四步 用代码帮我们买东西

packagecom;importlombok.extern.slf4j.Slf4j;importorg.openqa.selenium.By;importorg.openqa.selenium.chrome.ChromeDriver;importorg.openqa.selenium.support.ui.ExpectedConditions;importorg.openqa.selenium.support.ui.WebDriverWait;importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;/**
 * 用Java实现淘宝秒杀自动化
 * @author BeamStark
 * @date 2022-10-08-08:58
 */@Slf4jpublicclassWhereIsMyMoney{privatestaticStringShoppingTime="2022-10-09 04:02:00";publicstaticvoidmain(String[] args)throwsInterruptedException{
        log.info("开始时间:"+LocalDateTime.now());//        初始化驱动ChromeDriver chromeDriver =newChromeDriver();//        初始化等待时间WebDriverWait wait15s =newWebDriverWait(chromeDriver,15000);WebDriverWait wait1s =newWebDriverWait(chromeDriver,1000);//        先登录
        chromeDriver.get("https://login.taobao.com/member/login"+".jhtml?f=top&redirectURL=http%3A%2F%2Fwww.taobao.com%2F/");
        chromeDriver.findElementByXPath("/html/body/div/div[2]/div[3]/div/div/div/div[1]/i").click();
        log.info("等待登录");//        进入购物车
        wait15s.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1]/div[1"+"]/div/ul[2]/li[3]/div[1]/a/span[2]"))).click();//        选中购物车的第一个
        wait1s.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1]/div[3]/div/div/div[2]/div[2]/div[1"+"]/div/div[1]/div/div/label"))).click();
        log.info("选中,等待下单");Thread.sleep(500);//        等待下单while(true){if(LocalDateTime.now().isAfter(LocalDateTime.parse(ShoppingTime,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))){//              结算!
                chromeDriver.findElementByClassName("submit-btn").click();
                log.info("结算");//              锁单
                wait1s.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1"+"]/div[3]/div/div[1]/div[1]/div/div[9]/div/div/a[2]"))).click();
                log.info("锁单");System.out.println("下单成功,去支付吧! 完成时间:"+LocalDateTime.now());break;}}//      5秒后关闭Thread.sleep(5000);
        chromeDriver.quit();}}

在这里插入图片描述
三次连续测试通过
测试用时平均值0.8s左右(与网速和页面响应速度有关,以Chrome内核为准,没测过其他浏览器内核),反正比手动快多了就是了而且也不费心,该打游戏打游戏该刷剧刷剧,就挂着呗~

写在后面

感谢大家看到这里:》

此程序没有设置给你付款的代码,只会帮你锁单(给你留有后悔的余地),请大家合理消费
~洗洗睡啦 : )

参考文章:https://blog.csdn.net/chenjxj123/article/details/121802904

标签: java selenium 自动化

本文转载自: https://blog.csdn.net/qq_42668194/article/details/127219312
版权归原作者 BeamStark 所有, 如有侵权,请联系我们删除。

“使用Java基于selenium实现淘宝秒杀自动化”的评论:

还没有评论