selenium+java 关于图形化滑块的处理

Posted zctyk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium+java 关于图形化滑块的处理相关的知识,希望对你有一定的参考价值。

新人新手,初次接触selenium+Java自动化测试,试着分享点学习中的东西。

在做自动化的时候,有时会遇见图形化校验的问题,特别是现在大部分网站都加上了滑块校验,今天分享一下最简单的滑块校验的处理;

技术图片

 

这个滑块的处理步骤:

1.先定位和滑块控件的元素;

2.获得滑块滑动的距离,也就是滑块目的地的坐标;

3.拖动滑块。

1.定位滑块控件,如下图

技术图片

 定位外面的控件也行,定位里面小的那个也行

//
WebElement sour = driver.findElement(By.cssSelector(".cpt-img-double-right"));

//
WebElement sour = driver.findElement(By.cssSelector(".cpt-drop-btn"));

2.获得滑块滑动的距离,也就是滑块目的地的坐标,如下图

技术图片

 

滑块的运动就是从A点走到B点或C点的位置,需要把B或C的坐标,得到即可,

以A点为原点,水平距离为X,垂直距离为Y

1 //整个拖拽框的控件元素
2     WebElement ele = driver.findElement(By.cssSelector(".cpt-bg-bar"));
3 //拖拽的宽度即x的距离
4     int x = ele.getSize().getWidth();
5 //拖拽的高度即y的距离
6     int y = ele.getSize().getHeight();
7             

3.拖动滑块

1 //拖拽的动作
2     Actions action = new Actions(driver);
3     action.dragAndDropBy(sour, x, y).perform();

附上完整代码

 1 package se_2019;
 2 
 3 import org.openqa.selenium.By;
 4 import org.openqa.selenium.WebDriver;
 5 import org.openqa.selenium.WebElement;
 6 import org.openqa.selenium.firefox.FirefoxDriver;
 7 import org.openqa.selenium.interactions.Actions;
 8 public class lianxi_191001 
 9 
10     public static void main(String[] args) throws InterruptedException 
11         //建立驱动
12             System.setProperty("webdriver.gecko.driver", "C:\\\\Program Files\\\\Mozilla Firefox\\\\geckodriver.exe");
13             WebDriver driver = new FirefoxDriver();
14         //输入网址
15             driver.get("https://passport.ctrip.com/user/login");
16         //输入账号密码并点击登录
17             driver.findElement(By.id("nloginname")).sendKeys("18519523213");
18             driver.findElement(By.id("npwd")).sendKeys("1");
19             driver.findElement(By.id("nsubmit")).click();
20             Thread.sleep(3000);
21         //滑块控件元素
22             //WebElement sour = driver.findElement(By.cssSelector(".cpt-img-double-right"));
23             WebElement sour = driver.findElement(By.cssSelector(".cpt-drop-btn"));
24         //整个拖拽框的控件元素
25             WebElement ele = driver.findElement(By.cssSelector(".cpt-bg-bar"));
26         //拖拽的宽度即x的距离
27             int x = ele.getSize().getWidth();
28             System.out.println(ele.getSize().getWidth());
29         //拖拽的高度即y的距离
30             int y = ele.getSize().getHeight();
31             System.out.println(ele.getSize().getHeight());
32             Thread.sleep(3000);
33         //拖拽的动作
34             Actions action = new Actions(driver);
35             action.dragAndDropBy(sour, x, y).perform();
36             Thread.sleep(2000);
37         //关闭窗口
38             driver.close();
39         
40     
41 
42 

 

以上是关于selenium+java 关于图形化滑块的处理的主要内容,如果未能解决你的问题,请参考以下文章

selenium java 怎么向右拖动

如何使用带有缩略图滑块的光滑滑块创建自定义滑块?

带有两个滑块的交互式 matplotlib 图

使用OpenCVselenium解决滑块验证码

一行代码解决selenium进入抖音出现验证滑块

Selenium+java - 关于富文本编辑器的处理