轉載請聲明原文地址!
本次的主題是利用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