转载请声明原文地址!

本次的主题是利用selenium+java实现结算购买购物车中的商品。

话不多说,本次首先要注意的是谷歌浏览器的版本,浏览器使用的驱动版本,selenium的jar包版本。

 

谷歌浏览器版本

71.0.3578.80(正式版本) (64 位)

谷歌浏览器驱动

 

文末免费下载

Selenium版本

selenium-server-standalone-3.4.0

文末免费下载

 

首先最重要的还是配置环境,首先记住你谷歌浏览器驱动的保存地址,在环境变量后边添加 ;+保存地址(注意前面的分号必需) ,

例如我这里是 ;C:\Users\admin\Desktop\download\jar

    在eclipse中新建一个java project ,自行完善类、包。导入selenium jar进你的project。

在启动我的拖拉机之前,我想分享一下我完成这个小东西所经历的。首先你有一定的F12基础,你想输入某个数据进对方的文本框里,就必须知道这个框的具体位置,通过id、className、name等来锁定,最好找唯一的属性。我在定位元素的时候,用了常用的的driver.findElement(By.id/className/xpath),对于谷歌浏览器来说,xpath是可以比较方便地copy出来的。找到你想要定位的元素,其实不是难事,细心点,认真比对都可以找到。对于淘宝这个网页来说,最让我头疼的是href="javascript:;"这种看似有方便的ID实则永远也无法实现你想要的功能,这是最大的坑,具体可以百度javascript:;的功用。

本来我的思路本来是:登陆搜索商品选择商品选择套餐购买选择地址付款

但是由于鄙人不才,被立即购买这个按钮的href="javascript:;"绊倒了,日后有机会一定爬起来。鉴于正常思路进不去,所以我猥琐地退了一步,事先把要购买的商品加入到购物车,所以下文的思路是:打开淘宝主页点击购物车登陆勾选要结算的商品选址付款

你们也许在此前忙着寻找各种暴力、非暴力绕过淘宝滑块验证的方法,这里的话,我又偷了一次懒,使用绑定的微博登陆淘宝,不需要验证这种麻烦的东西。

代码如下:

首先在class里面配置你浏览器驱动,前提是你的path变量也配置好了。

    System.setProperty("webdriver.chrome.driver","C:\\Users\\admin\\Desktop\\download\\jar\\chromedriver.exe");//红色部分为驱动的存放地址

WebDriver driver =new ChromeDriver();

Actions action = new Actions(driver);

 

driver.get("https://www.taobao.com/");//打开淘宝主页

Thread.sleep(2000);

 

     driver.findElement(By.id("mc-menu-hd")).click();//购物车按钮

     Thread.sleep(2000);

     driver.findElement(By.id("J_Quick2Static")).click(); //选择用密码登陆

     Thread.sleep(2000);

     driver.findElement(By.className("weibo-login")).click();//选择微博登陆

     Thread.sleep(2000);

     driver.findElement(By.name("username")).sendKeys(new String[] {"___________"});//横线换为你的微博账号

     driver.findElement(By.name("password")).sendKeys(new String[] {"__________"});//横线换为你的微博密码

     driver.findElement(By.className("W_btn_g")).click();//确认使用微博登陆

 

Thread.sleep(5000);

driver.findElement(By.xpath("//*[@id=\"J_Order_s_3364814286_1\"]/div[1]/div/div/label")).click();//勾选第一个商家的所有商品,这里的xpath地址因人而异,根据你的淘宝购物车修改红色部分id,

Thread.sleep(1000);

driver.findElement(By.id("J_Go")).click();//购买

Thread.sleep(1000);

driver.findElement(By.className("go-btn")).click();//使用默认地址,确认购买

 

    
 

秒,让支付宝完成安全检测

 

     driver.findElement(By.id("payPassword_rsainput")).sendKeys(new String[] {"——————————"});//横线换为你的支付密码

     Thread.sleep(1000);

     driver.findElement(By.id("J_authSubmit")).click();//购买

 

try {

 

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

} catch (Exception e) {

e.printStackTrace();

}

}

}

好了,不出意外的话,这波操作将会在1分钟内完成,以上出现的时间等待为的是让网页有点时间加载所需元素,不然会报错提示找不到此element。本教程仅适用于初学软件测试的朋友,代码里出现的商品id、name等你不一定能对上,根据实际情况,自己耐心修改,不懂就多问,努力会有收获的。

下面是下载地址:

Selenium+浏览器驱动免费下载地址:

https://download.csdn.net/download/wsad4196/10886629

源代码:

https://download.csdn.net/download/wsad4196/10886630

利用Selenium+java实现淘宝自动结算购物车商品(附源代码)的更多相关文章

  1. 利用Selenium爬取淘宝商品信息

    一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样.由于这个性质,Selenium也是一 ...

  2. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...

  3. PYTHON 爬虫笔记十:利用selenium+PyQuery实现淘宝美食数据搜集并保存至MongeDB(实战项目三)

    利用selenium+PyQuery实现淘宝美食数据搜集并保存至MongeDB 目标站点分析 淘宝页面信息很复杂的,含有各种请求参数和加密参数,如果直接请求或者分析Ajax请求的话会很繁琐.所以我们可 ...

  4. 利用selenium自动化登录淘宝

    #encoding=utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains import A ...

  5. Java 实现 淘宝秒杀 聚划算 自己主动提醒 源代码

    说明 本实例可以监控聚划算的抢购button,在聚划算整点聚的时间到达时自己主动弹开页面(URL自定义). 能够自己定义监控持续分钟数,同一时候还能够通过多线程加快刷新速度. 源代码 package ...

  6. python3编写网络爬虫16-使用selenium 爬取淘宝商品信息

    一.使用selenium 模拟浏览器操作爬取淘宝商品信息 之前我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过A ...

  7. Chrome浏览器插件开发-淘宝自动登录

    浏览器插件的介绍 Chrome浏览器插件开发的准备工作 manifest.json配置介绍 页面如何注入scripts文件 一. 浏览器插件的介绍 浏览器插件是一种遵循一定规范的应用程序接口编写出来的 ...

  8. 淘宝自动登录2.0,新增Cookies序列化

    前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富.所以我们把之前的那个版本定为1.0,而今天修改的版本定为2.0.版本的地跌意味着功能的升级,那今天的2.0 ...

  9. 淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成逻辑计划

    淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成逻辑计划 SQL编译解析三部曲分为:构建语法树.生成逻辑计划.指定物理运行计划. 第一步骤,在我的上一篇博客淘宝数据库OceanBas ...

随机推荐

  1. 【Linux】debian 7 安装 rz sz lrzsz

    通常linux服务器是通过ssh客户端来进行远程登录和管理的.然而如何方便的实现客户端与linux服务器端的文件交互呢?这就需要用到rz(上传).sz(下载)工具.在Ubuntu 10.10下安装rz ...

  2. stm32 外部中断学习

    今天我们看看STM32的外部中断实验. STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一 ...

  3. 在线编辑word文档 可保存到服务器

    使用说明:该方法只在office xp 和 2003上 测试通过,2000及以下 版本没试. 注意:你要打开的服务器端的word文档要有写权限.iis要开起 web服务扩展中的webdav为允许 具体 ...

  4. GitKraken使用教程-基础部分(6)

    4) 放弃本次文件的改动 有些情况下,由于更改代码造成了编译无法通过等错误时,想要放弃这次对文件的修改,将文件还原成上一次提交后的状态,一种简单的恢复文件的方法就是,在Unstaged Files 列 ...

  5. EF框架

    Linq to EF 添加: //用户注册int IUserDAO.Register(Users user) { ; using (EF.ddgwDBEntities context = new EF ...

  6. intellijidea课程 intellijidea神器使用技巧 4-2 抽取

    1 抽取变量 Ctrl alt V 抽取变量 Ctrl alt C 抽取静态变量  顺带创建静态方法 Crrl alt F 抽取成员变量 2 抽取方法参数 Ctrl alt P 抽取参数,到方法体中 ...

  7. typedef struct 与 struct

    学c++之前最好先学c.特别要说的是,一些虽然冠名为c++的项目的文件中却大部分都是c的代码. 比如我们这个例子: 在c语言中,定义一个结构体和其实适合c++中有区别的.比如我们有如下的代码: str ...

  8. python网络编程-paramiko模块

    paramiko模块 该模块基于SSH用于连接远程服务器并执行相关操作 参考文档 SSHClient 用于连接远程服务器并执行命令 import paramiko #创建SSH对象 ssh = par ...

  9. Maven 私有库和本地库的安装与配置 Sonatype Nexus + Maven

    环境:CentOS 7.0 Final.JDK8.Sonatype Nexus.Maven 虚拟机模拟IP:192.168.16.167 备注:root权限用户操作 前提:已安装 JDK8 并配置好了 ...

  10. StringBuffer和StringBuilder区别?

    1. String是不可变类,改变String变量中的值,相当于开辟了新的空间存放新的string变量 2. StringBuffer 可变的类,可以通过append方法改变变量的值,且StringB ...