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

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

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


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

微信图片_20220424160546.png


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对象调用即可。

相关文章
|
6月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
461 0
|
7月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
523 1
|
9月前
|
人工智能 JavaScript 前端开发
Playwright自动化测试系列课(5) | ​​调试神器实战:Trace Viewer 录屏分析 + AI 辅助定位修复​
Playwright 的 Trace Viewer 提供录屏级追踪,还原测试全过程,帮助定位偶发故障。结合 AI 实现自动修复,大幅提升调试效率,成为自动化测试利器。
|
9月前
|
数据采集 机器学习/深度学习 边缘计算
Python爬虫动态IP代理报错全解析:从问题定位到实战优化
本文详解爬虫代理设置常见报错场景及解决方案,涵盖IP失效、403封禁、性能瓶颈等问题,提供动态IP代理的12种核心处理方案及完整代码实现,助力提升爬虫系统稳定性。
515 0
|
索引 Python
Python错误 - 'list' object is not callable 的问题定位与解决
出现编程问题并不可怕,关键在于是否可以从中学习与成长。遇到'list' object is not callable这样的错误,我们不仅需要学会应对,更需要了解其背后的原因,避免类似的问题再次出现。记住,Python的强大功能和灵活性同时也意味着我们需要对其理解更准确,才能更好的使用它。
1442 70
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
819 2
|
缓存 监控 算法
软件测试中的性能瓶颈定位与优化策略
性能瓶颈,如同隐藏在系统深处的“拦路虎”,悄无声息地制约着软件的表现。本文将揭示如何通过一系列科学方法,识别并消除这些障碍,从而显著提升软件性能,确保用户享受到流畅无阻的数字体验。
|
Python
Python 选出列表中特定的元素
Python 选出列表中特定的元素
330 3
|
数据处理 索引 Python
Python列表与元素修改的操作技巧
Python列表提供了丰富的方法和技巧来进行高效的数据操作。熟练运用上述技巧,可以大大提高数据处理的效率和代码的可读性。实践中,根据具体需求灵活选择合适的方法,可以在保证代码效率的同时,也使代码更加简洁明了。
469 2
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。

推荐镜像

更多
下一篇
开通oss服务