Selenium+JAVA淘宝登录、商品搜索、添加收货地址,提交订单、付款流程
package test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.util.ArrayList;
import java.util.List;
public class UITaobao {
public static void main(String[] args) throws Exception {
String url = "https://www.taobao.com/";
allProcess(url);
}
public static void allProcess(String url) throws Exception {
//加载webdirver所在的路径。webdirver要与所用的chrome版本一致
System.setProperty("webdirver.chrome.dirver", "D:\Tools\webdirveri\chromedriver.exe");
//创建ChromeDiever对象
ChromeDriver chromeDriver = new ChromeDriver();
chromeDriver.get(url);//打开网页
//默认进入淘宝主页,点击登录按钮,跳转登录界面
chromeDriver.findElementByXPath("//*[@id="J_LoginInfoHd"]/a[1]");
WebDriverWait wait = new WebDriverWait(chromeDriver, 10);
//等待页面加载出登录按钮- 登录界面
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//*[@id="login-form"]/div[4]/button")));
chromeDriver.findElementByXPath("//*[@id="fm-login-id"]").clear();//清除输入框的内容
chromeDriver.findElementByXPath("//*[@id="fm-login-id"]").sendKeys("wwww");//输入用户名
chromeDriver.findElementByXPath("//*[@id="fm-login-password"]").clear();
chromeDriver.findElementByXPath("//*[@id="fm-login-password"]").sendKeys("12345");//输入密码
//等待页面加载出主页面--淘宝网首页
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//*[@id="J_SiteNavBdR"]/li[1]/div/a")));
//搜索框输入搜索内容
chromeDriver.findElementByXPath("//*[@id="J_search_key"]").sendKeys("水杯");
chromeDriver.findElementByXPath("//*[@id="J_searchForm"]/input").click();//搜索
//获取当前页面句柄
String nowWindows = chromeDriver.getWindowHandle();
List allWindows = new ArrayList<>();
int j = 0;
for (int i = 0; i < allWindows.size(); i++) {
if (allWindows.get(i).equals(nowWindows)) {
j = i;
break;
}
}
//点击搜索后,加载新窗口,跳转到新窗口
chromeDriver.switchTo().window(allWindows.get(j));
chromeDriver.findElementByXPath("//*[@id="mx_5"]/ul/li[1]/a/div[1]/span").click();//点击商品
Thread.sleep(2);
//切换窗口,跳转商品详情页
for (int i = 0; i < allWindows.size(); i++) {
if (allWindows.get(i).equals(nowWindows)) {
j = i;
break;
}
}
//点击搜索后,加载新窗口,跳转到新窗口
chromeDriver.switchTo().window(allWindows.get(j));
chromeDriver.findElementByXPath("//*[@id="mx_9"]/div/div/a/div[3]/p").click();//点击商品名称,进入商品也
Thread.sleep(2);
//选择商品颜色
chromeDriver.findElementByXPath("//*[@id="J_Detailmeta"]/div[1]/div[1]/div/div[4]/div/div/dl[1]/dd/ul/li[1]/a/span")
.click();
//选择输入商品数量
chromeDriver.findElementByXPath("//*[@id="J_Amount"]/span[1]/input").clear();
chromeDriver.findElementByXPath("//*[@id="J_Amount"]/span[1]/input").sendKeys("2");
//确认
chromeDriver.findElementByXPath("//*[@id="J_linkBuy"]/span").click();
//添加收货地址
chromeDriver.findElementByXPath("//*[@id="addressPC_1"]/div[5]/button").click();
//添加收获地址的弹框为div弹框,与普通的元素定位一样
//等待弹框显示完全
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//*[@id="dialog-title-kt1lt9ab"]")));
//选择收货地址信息,收货地址为下拉框,用CSSSelector定位
//省信息
chromeDriver.findElementByCssSelector
("#cndzkEntrance > div:nth-child(2) > div > div > div.cndzk-entrance-division-box > ul.cndzk-entrance-division-box-content > div > li:nth-child(1)")
.click();
//市信息
chromeDriver.findElementByCssSelector
("#cndzkEntrance > div:nth-child(2) > div > div > div.cndzk-entrance-division-box > ul.cndzk-entrance-division-box-content > div > li:nth-child(1)")
.click();
//区信息
chromeDriver.findElementByCssSelector("#cndzkEntrance > div:nth-child(2) > div > div > div.cndzk-entrance-division-box > ul.cndzk-entrance-division-box-content > div > li:nth-child(1)")
.click();
//街道信息
chromeDriver.findElementByCssSelector("#cndzkEntrance > div:nth-child(2) > div > div > div.cndzk-entrance-division-box > ul.cndzk-entrance-division-box-content > div > li:nth-child(1)")
.click();
//输入详细地址信息
chromeDriver.findElementByXPath("//*[@id="cndzkEntrance"]/div[4]/div/div/textarea").clear();
chromeDriver.findElementByXPath("//*[@id="cndzkEntrance"]/div[4]/div/div/textarea").sendKeys("xxxxx");
//输入收货人姓名
chromeDriver.findElementByXPath("//*[@id="cndzkEntrance"]/div[4]/div/div/textarea").clear();
chromeDriver.findElementByXPath("//*[@id="cndzkEntrance"]/div[4]/div/div/textarea").sendKeys("XXX");
//输入手机号
chromeDriver.findElementByXPath("//*[@id="mobile"]").clear();
chromeDriver.findElementByXPath("//*[@id="mobile"]").sendKeys("1903083");
//保存收获地址
chromeDriver.findElementByXPath("//*[@id="myForm"]/div[5]/div[2]/button/span").click();
//选择收货地址
chromeDriver.findElementByXPath("//*[@id="addressPC_1"]/div[3]/div[1]/div[1]").click();
//提交订单
//提交订单信息在浏览器中未展示,需要下拉页面,用cssSelector定位
chromeDriver.findElementByCssSelector("#submitOrderPC_1 > div > a").click();
//等待跳转支付页面
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//*[@id="header"]/div/div[1]/span[1]/s")));
//输入支付密码
WebElement alipayPasswdFream = chromeDriver.findElementByXPath("//*[@id="payPassword_container"]/div");
//将密码输入框下的元素放入list中
List ilist = alipayPasswdFream.findElements(By.tagName("i"));
for (int i = 0; i < ilist.size(); i++) {
WebElement iElement = ilist.get(i);
iElement.sendKeys("1");
}
//确认付款
chromeDriver.findElementByXPath("//*[@id="J_authSubmit"]").click();
//关闭浏览器
chromeDriver.close();
}
}