java seleniu 滑块认证
获取滑块登录后的cookies信息,不成功则重复操作
- 首先利用cssSelector定位到#nc_1_n1z的滑块
- 查询滑块认证成功的长度
- 通过随机计算,将滑动分块操作
int retries = 0; //重复初始值 cookie
while ( retries < 3) { //循环判断
By elementLocator = By.cssSelector("span#nc_1_n1z");
WebElement slider = wait.until(ExpectedConditions.elementToBeClickable(elementLocator));
move(driver, slider, 325);
for (Cookie c : driver.manage().getCookies()) {
if (c.getName().equals("cookie")) {
cookie = c.getValue();
break;
}
}
retries++;
}
public void move(WebDriver driver, WebElement element, int distance) throws Exception {
int xDis = distance;// 移动的位置
int moveX = new Random().nextInt(10) - 5;
int moveY = 1;
Actions actions = new Actions(driver);
new Actions(driver).moveToElement(element).clickAndHold(element).perform();//点击并移动滑块
Thread.sleep(3000);//停留时间
actions.moveByOffset((xDis+moveX)/2,moveY).perform();
Thread.sleep((int)(Math.random()*3000));
actions.moveByOffset((xDis+moveX)/2,moveY).perform();//双重移动,减慢移动速度并逃脱检查
Thread.sleep(1000);
actions.release(); //释放操作
}