selenium-java实现1688 自动登录自动滑动验证码
首先需要下载 webDriver驱动 和你的谷歌浏览器匹配
下载地址 https://googlechromelabs.github.io/chrome-for-testing/#stable
pom.xml
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.14.0</version>
</dependency>
登录
public static void login(ChromeDriver webDriver, String username, String password) throws InterruptedException {
webDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
String baseUrl = "https://login.taobao.com/";
webDriver.get(baseUrl + "?redirect_url=https%3A%2F%2Flogin.1688.com%2Fmember%2Fjump.htm%3Ftarget%3Dhttps%253A%252F%252Flogin.1688.com%252Fmember%252FmarketSigninJump.htm%253FDone%253Dhttps%25253A%25252F%25252Fmember.1688.com%25252Fmember%25252Foperations%25252Fmember_operations_jump_engine.htm%25253Ftracelog%25253Dlogin%252526operSceneId%25253Dafter_pass_from_taobao_new%252526defaultTarget%25253Dhttps%2525253A%2525252F%2525252Fwork.1688.com%2525252F%2525253Ftracelog%2525253Dlogin_target_is_blank_1688&style=tao_custom&from=1688web");
// webDriver.switchTo().frame(0);
webDriver.findElement(By.cssSelector(".password-login-tab-item")).click();
//休息5秒
Thread.sleep(5000);
webDriver.findElement(By.id("fm-login-id")).clear();
webDriver.findElement(By.id("fm-login-id")).sendKeys(username);
webDriver.findElement(By.id("fm-login-password")).clear();
webDriver.findElement(By.id("fm-login-password")).sendKeys(password);
webDriver.findElement(By.cssSelector(".password-login")).click();
//休息5秒
Thread.sleep(5000);
}
处理滑块验证的相关代码
WebElement draggable = driver.findElement(By.id("nc_1_n1z"));//定位元素
Actions bu = new Actions(driver); // 声明action对象
bu.clickAndHold(draggable).build().perform(); // clickAndHold鼠标左键按下draggable元素不放
bu.moveByOffset(200, 2).perform(); // 平行移动鼠标
Thread.sleep(200);
bu.moveByOffset(280, 2).perform(); // 平行移动鼠标
Thread.sleep(200);
bu.moveByOffset(300, 2).perform(); // 平行移动鼠标
Thread.sleep(1500);
登录代码
login(webDriver, "18******", "l******");
商品添加到购物车
WebDriverWait wait = new WebDriverWait(webDriver, 5, 1);
webDriver.get(url);
wait.until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver webDriver) {
return webDriver.findElement(By.xpath("//span[@class='next-input-group-addon next-after']/button"));//增加购买商品数量
}
}).click();
Thread.sleep(200);
//点击购买按钮
WebElement addButton = wait.until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver webDriver) {
List<WebElement> elements = webDriver.findElements(By.xpath("//div[@class='order-normal-button']"));
for (WebElement element : elements) {
if ("加采购车".equals(element.getText()) || "非活动价进货".equals(element.getText())) {
return element;
}
}
return null;
}
});
if (addButton != null) {
addButton.click();
}
生成订单过程类似,在购物车页面选择商品后提交订单,这里就不贴代码了
这里只是介绍了下基本的功能,要想自动完成全部过程,里面还会有一些淘宝selenium工具检测,滑块验证过程需要自己处理
有需要的同学可以加群:6285 98137