https://blog.csdn.net/u010503127/article/details/51381284
Selenium实现元素的拖拽(java版)
【前言】
自从淘宝网登陆页出现滑块验证,很多其他网站也在模仿这个滑块验证,在防止机器人恶意注册方面确实起到一定的作用。
【关于滑块的原理】:
响应时间,拖拽速度,时间,位置,轨迹,重试次数等。这些因素能够构成一个采样结果或者辨识特性。根据这些特性可以猜测,你是人或者其他东西。或者能够猜测,你是谁或者什么东西。猜测结果中会涉及到另一个问题,那就是概率,比如80%的概率是人,那么就会放行,30%的概率是人,那就会跳转到更复杂的验证或者拒绝放行等。阈值的设定就需要仔细研究了。
【滑块拖动实现过程】:
【滑块拖动实现过程】:
1,判断验证码在什么时候出现。
2,验证码出现时,判断何时加载完成。
3,确定验证码的位置。
4,用鼠标模拟拖动验证码。
5,检验本次操作是否成功
【滑块实现代码范例】:
【前言】 自从淘宝网登陆页出现滑块验证,很多其他网站也在模仿这个滑块验证,在防止机器人恶意注册方面确实起到一定的作用。 【关于滑块的原理】: 响应时间,拖拽速度,时间,位置,轨迹,重试次数等。这些因素能够构成一个采样结果或者辨识特性。根据这些特性可以猜测,你是人或者其他东西。或者能够猜测,你是谁或者什么东西。猜测结果中会涉及到另一个问题,那就是概率,比如80%的概率是人,那么就会放行,30%的概率是人,那就会跳转到更复杂的验证或者拒绝放行等。阈值的设定就需要仔细研究了。 【滑块拖动实现过程】: 1,判断验证码在什么时候出现。 2,验证码出现时,判断何时加载完成。 3,确定验证码的位置。 4,用鼠标模拟拖动验证码。 5,检验本次操作是否成功 【滑块实现代码范例】: [java] view plain copy //新增判断是否存在滑块验证 try{ admcDriver.findElement(By.id("sillerVerifyCode")).click();//sillerVerifyCode为滑块出现时的id logger.info("滑块元素已经存在!!!"); Actions action = new Actions(admcDriver); //获取滑动滑块的标签元素 WebElement source = admcDriver.findElement(By.xpath("//div[@class='dt_child_content']/div[3]")); //确保每次拖动的像素不同,故而使用随机数 action.clickAndHold(source).moveByOffset((int)(Math.random()*200)+80, 0); Thread.sleep(2000); action.clickAndHold(source).moveByOffset((int)(Math.random()*200)+80, 0); Thread.sleep(2000); action.clickAndHold(source).moveByOffset((int)(Math.random()*200)+80, 0); Thread.sleep(2000); action.clickAndHold(source).moveByOffset((int)(Math.random()*200)+80, 0); Thread.sleep(2000); //拖动完释放鼠标 action.moveToElement(source).release(); //组织完这些一系列的步骤,然后开始真实执行操作 Action actions = action.build(); actions.perform(); }catch(ElementNotVisibleException e1){ logger.info("滑块元素不存在"); }