appium做app自动化测试过程中,有时需要获取控件元素的坐标进行滑动操作.appium中提供了location方法获取控件元素左上角的坐标,再通过size方法获取控件元素的宽高,就可以得到控件元素更多的坐标. 一,获取元素坐标的方法 1,size获取元素的宽.高 ele_size = driver.find_element_by_xx('xx').size # 元素的宽 width = ele_size['width'] # 元素的高 height = ele_size['height']…
1.实验 #https://captcha.luosimao.com/demo/ chrome default: location 不滚动,直接返回相对整个html的坐标 {'x': 15.0, 'y': 129.0} location_once_scrolled_into_view 返回相对可视区域的坐标(改变浏览器高度,可以观察到底部元素底部对齐后y的变化) 顶部/底部元素 完全可见不滚动,{u'x': 15, u'y': 60} 顶部元素部分可见或完全不可见都会滚动到 顶部对齐 {u'x'…
JavaScript通过ID获取元素坐标 function getElementPos(elementId) {    var ua = navigator.userAgent.toLowerCase();    var isOpera = (ua.indexOf('opera') != -1);    var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof    var el = document.get…
做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景.但前期调试脚本的话,可以先使用模拟器,这样相对更加方便. 不推荐使用Android SDK里自带模拟器,太卡. 这里介绍两款我正在用于做自动化测试的模拟器:Genymotion 与 夜神模拟器. 一,Genymotion 1,注册账号 使用Genymotion时需要登录账号,我们需要去Genymotion官网注册账号. 官网地址:https://www.genymotion.com/ 官网首页点击[Si…
一,前言 在之前的appium自动化测试示例中,我们都是把构造driver实例对象的数据(即Desired Capabilities)写在业务代码里,如下: # -*- coding:utf-8 -*- # @author: 给你一页白纸 from appium import webdriver desired_caps = { "platformName": "Android", "platformVersion": "10"…
一,问题 app自动化测试使用Android真机连接电脑时,通常会遇到两种情况: 1.测试机连接电脑会弹窗提示USB选项,选择USB用于"传输文件",有些手机不支持设置默认USB选项,手机重新连接电脑时都需要手动点击选择USB选项: 2.使用adb命令在真机上安装app时,需要手动点击确认安装按钮. 二,思考 每天定时唤醒手机执行自动化测试时,偶尔会遇到真机重新弹窗提示进行USB用于选项的选择,需要选择USB用于传输文件,否则会执行失败.为了能让手机自动选择USB用于传输文件,我们考虑…
在使用appium做app自动化测试的过程中,可能会遇到元素的属性值不是唯一的情况,导致不能通过find_element_bi_xx()方法定位元素,这个时候我们就可以通过坐标来定位元素. 1,通过绝对坐标定位(不推荐) 在手机(或模拟器)的开发者选项里打开指针位置,任意点的绝对坐标都能获取到,如下A点的坐标为(542, 1362) 2,通过相对坐标定位(推荐) 更换不同分辨的测试机后,之前获取的手机某个位置点的绝对坐标就会改变,这样每次更换测试机都需要更改坐标,显然是不方便代码的维护,所以就需…
用python+appium做appUI自动化测试,系统为Windows.首先是JDK与Android SDK的安装与环境变量的设置. 一,安装JDK,配置JDK环境变量 1,下载jdk jdk8官网下载地址: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 选择对应的系统下载,我的电脑是Windows64位所以选择红框标注的安装包下载. 官网下载需要创建登录Oracle账号,下面提供一个网盘下…
在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待的方法来避免这种情况,增加代码的健壮性. 一,元素等待方法 1,强制等待 import time # 强制等待5s time.sleep(5) 2,隐式等待 implicitly_wait()是由webdriver提供的隐式等待方法,它不是针对某一个元素,而是针对当前session(即当前drive…
之前一篇博客已经讲述怎样手动使用appium-desktop启动测试机上的app,但我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登陆app.环境为Windows10 + Python3.7 + appium1.18.0 + Android手机 + 今日头条app + Pycharm 一,连接测试手机,获取测试机及被测APP配置 具体的获取方法请参考APP自动化测试之appium连接真机启动app,配置信息如下: { "plat…
js 获取元素的位置 var odiv=document.getElementById('divid'); alert(odiv.getBoundingClientRect().left); alert(odiv.getBoundingClientRect().top); js 获取点击时间鼠标坐标 event = event||window.event; //获得相对于body定位的横标值: x=event.clientX //获得相对于body定位的纵标值: y=event.clientY…
基础背景: windows7系统 +python3.4版本 环境搭建目标: 使用python编写app自动化测试脚本并成功执行. 搭建步骤:   1.安装python3,安装步骤详见:https://baijiahao.baidu.com/s?id=1605684471000597023&wfr=spider&for=pc,注意安装完后配置环境变量. 2.安装python编译器pycharm,安装步骤详见:https://www.cnblogs.com/dcpeng/p/9031405.h…
一,前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位toast或者获取toast的文案进行断言,如下图,通过定位"登录成功"的toast就可以断言今日头条登录用例是否通过.但toast区别于控件元素,无法获取焦点,不能通过uiautomatorviewer.bat.appium.weditor等工具定位,因此我们就需要通过别的方法来定位. 二,环境 windows 10 Android 10 appium 1.18.0 (desktop) selen…
app自动化测试的第一步,是启动被测app.appium环境搭建好后,我们就可以连接真机启动app了.环境为windows,Appium1.18.0,Android手机,被测app为今日头条app,让我们开始吧. 一,连接手机(测试机) 通过USB线连接Android手机和电脑,打开手机的开发者模式,开启USB调试模式(方法自行百度). 打开cmd输入命令adb devices,显示连接手机的udid即为连接成功. 输入adb devices后如果List of devices attached…
滑动屏幕方法swipe一般用于对页面进行上下左右滑动操作,但自动化过程中还会遇到其他情况,如对控件元素进行滑动.拖拽操作,九宫格解锁,手势操作,地图的放大与缩小等.这些需要针对控件元素的滑动操作,或者点至点.元素至元素之间的滑动操作,使用swipe方法显然不是很方便,这时候就可以用到appium里提供TouchAction类和MultiAction类. 一,TouchAction类 1,TouchAction类由webdriver库提供,提供以下方法: tap(self, element=Non…
app自动化测试过程中,经常会遇到滑动屏幕操作,appium框架的话我们可以使用webdriver提供的swipe()方法来对屏幕页面进行上滑.下滑.左滑.右滑操作. 一,swipe方法介绍 swipe()方法源码如下: swipe()方法的参数说明: start_x:起始横坐标 start_y:起始纵坐标 end_x:结束时横坐标 end_y:结束时纵坐标 duration:滑动持续时间,单位毫秒,默认None(一般设置500-1000毫秒比较合适) duration参数需要注意的是,在移动设…
一,selenium模块的两种截图方法 get_screenshot_as_file(filename) 参数filename为截图文件保存的绝对路径,如: driver.get_screenshot_as_file(r'E:/test_project/screenshot/test_01.png') save_screenshot(filename) 该方法与get_screenshot_as_file()不同的是,参数为文件名称,保存当前屏幕截图到当前脚本所在的文件,如: driver.sa…
对于Android而言,查找appUI界面元素属性的工具有三种:appium desktop,uiautomatorviewer.bat,weditor.之前已经介绍过了weditor的使用,这里我将通过使用uiautomatorview工具查看元素的属性值,来介绍Android app通过appium进行元素定位常用的几种方法. 一,使用uiautomatorview对app页面截图,查看元素属性 连接Android手机 在Android SDK的目录里的tools文件夹中找到uiautoma…
一,weditor的安装与使用 首选需要在电脑上配置好Python环境 下载安装命令如下,加上镜像下载速度更快: pip install weditor -i https://pypi.tuna.tsinghua.edu.cn/simple 启动weditor命令: python -m weditor 此时会打开浏览器新建窗口如下 连接手机.输入adb devices命令,获取手机的设备id 在浏览器editor页面,选择Android,输入手机的设备id,点击Connect按钮.按钮出现绿叶小…
不错哦! 原文地址:http://jianzhong5137.blog.163.com/blog/static/9829049201182295833503/ 绝对X,Y坐标,可以用offset()方法: var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; 获取相对(父元素)位置: var X = $('#DivID').position().top; var Y = $('#DivID').position(…
获取页面某一元素的绝对X,Y坐标,相对于浏览器窗体,可以用offset()方法: var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; 获取相对(父元素)位置: var X = $('#DivID').position().top; var Y = $('#DivID').position().left; 例如: var offset = $("#fontsize").position();$(&quo…
获取页面某一元素的绝对X,Y坐标,可以用offset()方法: var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; 获取相对(父元素)位置: var X = $('#DivID').position().top; var Y = $('#DivID').position().left; 让Div随滚动条移动: <div id="oLayer" style="position: abso…
简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完整的python+appium自动化测试框架. 框架背景 前面我们已经学习了Appium各种元素定位,手势操作.数据配置.Pageobject设计模式等等.但是前面的功能都是比较零散的,没有整体融合起来,实际项目实践过程中我们需要综合运用,那么本章节我们将结合之前所学的内容,从0到1搭建一个完整的p…
目录 1.获取元素文本内容 (1)text()方法 (2)get_attribute()方法 (3)综合练习 2.获取元素在屏幕上的坐标 1.获取元素文本内容 (1)text()方法 业务场景: 进入设置. 获取所有元素class属性为android.widget.TextView的文本内容. 代码实现: # 定位元素 text_vlaue = driver.find_elements_by_class_name("android.widget.TextView") # 打印页面中cl…
九宫格作为常见的手势密码,我们在使用的时候,是从起点开始,按住不放,然后滑动手指,直到最后一个点松开手指,如果与设置的手势密码匹配,则解锁成功. 现在大多数九宫格作为一个元素存在,很难定位到每一个点. 解决思路有两个,一是用指针定位每一个点:二是先获取元素坐标位置,再获取元素大小,然后切割图片,分别计算出每个点的坐标: 本次笔记记录第一个解决思路: 目的:创建一个Unlock类,按顺序传入九宫格的解锁数字即可实现主屏幕解锁 模拟器:夜神 1.坐标定位到每个点 A.夜神模拟器开发者选项中开启指针位…
python webdriver自动化测试初步印象 以下示例演示启动firefox,浏览google.com,搜索Cheese,等待搜索结果,然后打印出搜索结果页的标题 from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.…
自定义脚本的稳定性测试 常规Monkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景这时候就需要用到自定义脚本了,Monkey支持执行用户自定义脚本的测试,用户只需要按照Monkey脚本的规范编写好脚本,存放到手机上,启动Monkey通过-f 参数调用脚本即可. 测试案例 启动考研帮app3.1.0,然后跳过升级提示和引导页面,进入到登录界面并输入用户名密码进行登录. 需求分析 从用户角度来思考步骤该怎样进行? 要操作的元素该如何定位? 怎样将操作步骤转化为测试脚本? 获…
1.获取当前页面的Url函数 方法:current_url 实例: driver.current_url 2.获取元素坐标 方法:location 解释:首先查找到你要获取元素的,然后调用location方法 实例: driver.find_element_by_xpath("//*[@id='tablechart']/tbody/tr[14]/td[9]").location 3.表单的提交 方法:submit 解释:查找到表单(from)直接调用submit即可 实例: drive…
引言 最近突然看到了有关图片懒加载的问题,大致意思就是初始状态下页面只加载浏览器可视区域的图片,剩余图片在当浏览器可视区域滚动到其位置时才开始加载.貌似现在许多大型网站都有实现懒加载,所以我便就此问题思考了一下.首先第一个问题是浏览器没有相关的 API 方法可以检测某个元素是否在可视区域,那么就只能我们人工计算,所以这里就涉及到了元素长宽,滚动条位置的知识.本文涉及的到的知识有元素长宽 clientWidth/offsetWidth/scrollWidth 的区别.以及 clientTop/of…
基于Appium.Python的自动化测试环境部署和实践   第一章 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile Web)应用UI自动化测试的相关自动化测试人员.开发人员等提供参考. 1.2 预期读者 自动化测试人员.测试代表.开发人员等. 第二章 概述 2.1 Appium设计哲学 不需要为了自动化而且重新编译或修改测试app: 不应该让移动端自动化测试限定在某种语言和某个具体的框架:也就是说任何人都可以使用…