转载请声明原文地址!
本次的主题是利用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();//使用默认地址,确认购买
Thread.sleep(15000);//等个15秒,让支付宝完成安全检测
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