【Appnium 小试牛刀之一】java实现根据设定元素系数坐标,计算当前机型的相对坐标,并对其点击操作

原理:先将一个机型作为标准,获取该机型中app的元素绝对坐标[start(x,y)和end(x,y)]和该机型的宽或高,并分别计算start和end的X 和Y坐标系数值,再根据当前测试机型的宽或高,乘以相对应的系数值,就计算出当前机型的start(x,y)和end(x,y)坐标。     具体实现,要了解清楚swipe方法实现坐标的操作思路。

package main;

import io.appium.java_client.AppiumDriver;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.remote.DesiredCapabilities;

public class app_init {

    public static AppiumDriver set_up() throws Exception {
    	AppiumDriver driver;

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "W4OZLZ6L4TWG4HCU");
        capabilities.setCapability("platformVersion", "5.1");
        capabilities.setCapability("appPackage","com.fuzhong.xiaoliuaquatic");
        capabilities.setCapability("app","D:\\XiaoLiuAquatic_product_6.0.4.apk");
        capabilities.setCapability("noReset","True");
        driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        return driver;
    }

	/**获取变动的X坐标值
	 * 原理:根据设置系数(以某个机型作为标准,获取此机型的width值和元素坐标X值),再获取当前测试机的width值,得到当前测试机的相对坐标X值
	 * @param driver
	 * @param x    参考机型该元素的x坐标值
	 * @param s_w  参考机型的width值
	 * @return  返回当前机型的x坐标值
	 */
	public static int Get_x_coordinate(AppiumDriver driver,double x, int s_w){
		double a = x / s_w;
		int w = driver.manage().window().getSize().width;
		int new_x= (int) (a * w);
		return new_x;		
	}
	
	/**获取变动的Y坐标值
	 * 	原理:根据设置系数(以某个机型作为标准,获取此机型的height值和元素坐标Y值),再获取当前测试机的height值,得到当前测试机的相对坐标Y值 
	 * @param driver
	 * @param y   参考机型该元素的y坐标值
	 * @param s_h  参考机型的height值
	 * @return   返回当前机型的y坐标值
	 */
	public static int Get_y_coordinate(AppiumDriver driver,double y, int s_h){
		double b = y / s_h;
		int h = driver.manage().window().getSize().height;
		int new_y= (int) (b * h);
		return new_y;
	}


	public static void main(String[] args) throws Exception {
		AppiumDriver drivers = set_up();
        //获取当前测试机操作元素的坐标:star(x1,y1)坐标到end(x2,y2)坐标
		int x1 = Get_x_coordinate(drivers, 54.00, 720);
		int y1 = Get_y_coordinate(drivers, 578.00, 1184);
		int x2 = Get_x_coordinate(drivers, 666.00, 720);
		int y2 = Get_y_coordinate(drivers, 658.00, 1184);
		System.out.print("x1:" + x1 + "\n");
		System.out.print("y1:" + y1 + "\n");
		System.out.print("x2:" + x2 + "\n");
		System.out.print("y2:" + y2 + "\n");
		drivers.swipe(x1, y1, x2, y2, 2);
    }
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值