• Python+Appium自动化测试(12)-通过坐标定位元素


    在使用appium做app自动化测试的过程中,可能会遇到元素的属性值不是唯一的情况,导致不能通过find_element_bi_xx()方法定位元素,这个时候我们就可以通过坐标来定位元素。

    1,通过绝对坐标定位(不推荐)

    在手机(或模拟器)的开发者选项里打开指针位置,任意点的绝对坐标都能获取到,如下A点的坐标为(542, 1362)

    2,通过相对坐标定位(推荐)

    更换不同分辨的测试机后,之前获取的手机某个位置点的绝对坐标就会改变,这样每次更换测试机都需要更改坐标,显然是不方便代码的维护,所以就需要获取相对坐标。

    2.1,获取相对坐标的思路:

    1,选择任意一台测试手机(或模拟器)

    2,获取需要定位的点的绝对坐标(x1, y1)

    3,获取当前测试机屏幕的宽度(w1)、高度(h1)

    4,获取该点横坐标与屏幕宽的比(x1/w1),纵坐标与屏幕高的比(y1/h1)

    5,更换测试机后,获取新的测试机屏幕的宽(w2),高(h2)

    6,计算新测试机上该点横坐标x2=w2 * (x1/w1),纵坐标y2 = h2 * (y1/h1)

    2.2,点击A点代码如下:

    点击绝对坐标

    # 点击绝对坐标时的代码,测试机屏幕宽1080,高2340
    driver.tap(542, 1362)
    

    点击相对坐标

    # 重新封装点击A点相对坐标的方法
    def tapA(driver):
        # 比例系数
        x = 542/1080
        y = 1362/2340
        # 获取新测试机屏幕宽、高
        w = driver.get_window_size()['width']
        h = driver.get_window_size()['height']
        # 屏幕宽高乘以A点的比例系数,即可得A点在新测试机上坐标
        driver.tap(x*w, y*h)
    

    需要注意:

    1,webdriver中提供坐标点击方法tap(),而元素点击方法则是click();

    2,区别于TouchAction类中的tap()方法,不需要构造TouchAction对象,driver对象调用即可。

  • 相关阅读:
    Python简介
    名词术语 1
    TypeError: 'method' object is not subscriptable 一般是函数没加括号导致的
    MYSQL 使用命令行导入文本数据 csv数据
    日期函数格式化
    日期函数——第几天、第几周、星期几、第几季度
    日期函数——MYSQL
    集合常见面试题
    输入一个随机整数,输出对应的大写
    Oracle数据库基本sql语句
  • 原文地址:https://www.cnblogs.com/lfr0123/p/13695422.html
Copyright © 2020-2023  润新知