zoukankan      html  css  js  c++  java
  • 【Selenium-WebDriver问题篇】Selenium实现元素的拖拽(java版)(转)

    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("滑块元素不存在");        
              }  
  • 相关阅读:
    editable : false与 readonly 的区别
    Ubuntu环境下使用Jupyter Notebook查找桌面.csv文档的方法
    实验01——java模拟银行ATM系统
    Wannafly挑战赛26 御坂网络
    Wannafly挑战赛29 御坂美琴(递归,模拟)
    牛客练习赛31 龙魂合一萨坎与晶石
    牛客练习赛31
    Codeforces Round #520 (Div. 2)A. A Prank
    (花里胡哨)New Game!(牛客国庆集训派对Day1)
    Educational Codeforces Round 54 (Rated for Div. 2)A. Minimizing the String(签到题)
  • 原文地址:https://www.cnblogs.com/conquerorren/p/9018546.html
Copyright © 2011-2022 走看看