案例分享,Appium+Python实现APP启动页跳转到首页!

Python + Appium 实现网易严选 APP 自动化测试全流程指南 在移动互联网时代,APP 功能迭代频繁,回归测试的质量与效率成为团队关注的焦点。UI 自动化测试通过脚本模拟真实用户操作,能够有效覆盖搜索、购物车、结算等长链路流程,是保障核心功能稳定性的重要手段。Appium 作为跨平台的自动化测试框架,打通了 Python 与 Android 设备的通信链路,配合 UiAutomator2 驱动,能够精确识别页面控件并模拟点击、输入等行为。在实际工程中,利用 pytest 管理用例、WebDriverWait 处理异步加载、Page Object 设计模式维护页面元素, 阅读详情

下面以 MSN news 为例,实现启动APP后跳转到首页的功能,包含使用list进行元素定位、try except else 进行是否首次启动APP判断,logging 进行日志记录等功能。

 

 

 

 

Python资源共享群:484031800

一、场景:

1.启动APP后连续跳过welcom、interest 、what’s new页面到首页

2.判断是否是首次启动,如果首次启动通过出现welcom页面,如果不是首次启动则直接进入interest页面

3.使用logging模块记录日志

Gif图片文件:

 

 

 

 

 

二、实践

2.1、启动APP后连续跳过welcom、interest 、what’s new页面到首页

welcom页面

 

 

 

 

 

1.首先启动Appium进行session回话

2.APP启动到welcom页面,点击not now按钮,跳转到下一个页面

分析:这里我使用list元素进行定位,通过观察可以知道class name 和sign in name名称相同,如果直接使用classname那么就会定会到当前页面首个class name元素,导致定位失败。

list定位获取一组class名称,通过数组下标进行区分

a=driver.find_element_by_id()

a[1].click()

3.代码:

skipwel=driver.find_elements_by_class_name('android.widget.Button')

skipwel[1].click()

2.2、判断是否是首次启动,如果首次启动通过出现welcom页面,如果不是首次启动则直接进入interest页面

首次启动app时,会弹出welcome页面,但是第二次启动时该页面就会消失,出现interest页面那么对于这种判断我们该如何处理呢

这里我们使用try except 语句进行判断

try except 语法:

 

 

 

 

 

工作原理:

如果try语句发生异常,则执行except 匹配名称后语句

如果try语句未发生异常,执行else后面语句

如果try语句发生异常,except语句后内容没有匹配成功,异常将被递交到上层的try

处理思路:

定位interest页面,如果定位失败,证明出现的是welcome,执行welcome语句;否则执行interest页面语句

代码:

def welcome():

logging.info('skip welcome')

skipwel=driver.find_elements_by_class_name('android.widget.Button')

skipwel[1].click()

try:

driver.find_elements_by_class_name('android.widget.Button')

except NoSuchElementException:

welcome()

else:

skipinterest=driver.find_elements_by_class_name('android.widget.Button')

skipinterest[0].click()

interets 页面

原理同welcom 页面

skipinterest=driver.find_elements_by_class_name('android.widget.Button')

skipinterest[0].click()

what‘s new page

原理同welcom 页面

skipwhatnew=driver.find_elements_by_class_name('android.widget.Button')

skipwhatnew[1].click()

2.3、使用logging 模块记录日志

日志是用来帮我们定位问题,通过日志可以更准准确的确定问题所在,我们可以设定日志级别、日志的输出格式等

场景:

在启动APP时,输出start app 日志

导航页跳转到首页过程,输出执行的页面为interest 页面还是welcome 页面

2.3.1、单个py文件日志

在单个py文件里日志输出形式如下:

1.日志流程

首先,导入日志模块

然后,basicconfig 方法创建记录器,为记录做基本配置。

日志级别:level

日志输出路径:Filename

日志输出格式:Format

最后,在需要添加日志的地方输出日志即可,logging.info(’start app‘)

代码实现

import logging

logging.basicConfig(level=logging.INFO,filename='456.log',format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')

#判断是否首次启动App,跳过导航页到首页

def welcome():

logging.info('skip welcome')

skipwel=driver.find_elements_by_class_name('android.widget.Button')

skipwel[1].click()

try:

driver.find_elements_by_class_name('android.widget.Button')

except NoSuchElementException:

logging.info('run welcome')

welcome()

else:

logging.info('run interest')

skipinterest=driver.find_elements_by_class_name('android.widget.Button')

skipinterest[0].click()

3.运行

在代码中456.log中查看日志输出信息

 

 

 

 

 

2.3.2 日志模块

上面讲述的是单个功能日志的流程,整个APP测试下来有很多功能都需要用到日志,如果每个功能都重复编写,会造成代码冗余

所以,下面我们把日志的配置参数抽离出来,需要时直接调用即可

1.首先建立log.conf文件,存储配置参数等信息

log.conf文件代码:

[loggers]

keys=root,infoLogger

[logger_root]

level=DEBUG

handlers=consoleHander,fileHandler

[logger_infoLogger]

handlers=consoleHander,fileHandler

qualname=infoLogger

propagat=0

[handlers]

keys=consoleHander,fileHandler

[handler_consoleHander]

class=StreamHandler

level=INFO

formatter=form02

args=(sys.stdout,)

[handler_fileHandler]

class=FileHandler

level=INFO

formatter=form01

args=('456.log','a')

[formatters]

keys=form01,form02

2.在需要引用log的py文件中引用log.conf文件

 

 

 

 

 

将上文中如下代码删除

logging.basicConfig(level=logging.INFO,filename='456.log',

format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')

更换为:

CON_LOG='log.conf'

logging.config.fileConfig(CON_LOG)

logging=logging.getLogger()

三、报错提示

总结运行过程中报错提示及解决方法

1.Eclipse运行 启动app 代码,提示launching new configuration

 

 

 

 

 

Eclipse

解决方法:

Project -> Properties -> Run/Debug Settings:

1. select "Launching New_configuration5"

2. Delete

2.ImportError: cannot import name 'webdriver'

 

 

 

 

 

解决方法:

from selenium import webdriver

3.TypeError: 'WebElement' object does not support indexing

 

 

 

 

 

解决:把find_element 改为find_elements?

4.IndexError: list index out of range

 

 

 

 

 

解决:

有可能是数组越界,里面数值从0开始标记

再有可能list是一个空的,没有一个元素

进行list[0]就会出现该错误

5.module 'logging' has no attribute 'basicConfig'

 

 

 

 

 

解决:

自己就命名了一个logging.py的文件,在代码中import的是自己新建的这个,找不到basicConfig,文件名改成logging_test.py后,正常运行。

6.int' object is not callable

 

 

 

 

 

解决:发现代码中写的是logging.DEBUG,应该为logging.debug()

〖Python APP 自动化测试实战篇⑥〗- 实战 - appium 定位手机元素之常用的元素定位方法 对象的定位是在我们自动化测试领域非常非常关键的一步,也可以说是最关键的一步。毕竟对象都没有定位到,根本就没法操作啊。所以在这一章节中,希望大家能够多多动手去操作,不要仅仅是看。毕竟 "手是好汉,眼是懒蛋" 不是。......... 阅读详情

相关推荐

Unity URP炫彩干涉效果:从薄膜干涉原理到Shader Graph实现

薄膜干涉是一种常见的光学现象,指光在透明薄膜上下表面反射后产生干涉,形成彩虹色条纹。其原理基于光程差导致的相长与相消干涉,不同波长的光被选择性增强或削弱。在计算机图形学中,这一物理现象被抽象为高效的数学模型,通过Shader编程实现动态色彩变化,为游戏和实时渲染带来独特的视觉表现力。技术实现上,常采用正弦函数结合噪声纹理来模拟色彩循环,利用法线与视角点积作为基础变量,加入噪声扰动模拟厚度不均,实现随视角变化的虹彩效果。在Unity URP渲染管线中,可通过Shader Graph可视化工具或手写HLSL代码

weixin_34026997的博客 294

案例分享,Appium+Python实现APP启动页跳转到首页

下面以 MSN news 为例,实现启动APP后跳转到首页的功能,包含使用list进行元素定位、try except else 进行是否首次启动APP判断,logging 进行日志记录等功能。 一、...

cky8792的博客 2604

在Ansys Mechanical中对磨损进行建模

在有限元分析中,磨损是通过移动接触表面上的节点来复制材料侵蚀来建模的。仿真迭代更新几何,并在每次更新后重新计算平衡,使过程成为非线性的。Ansys使用将压力、相对运动和材料阻力与表面损失联系起来的经验定律来处理连续介质尺度的磨损。要在Ansys Mechanical中激活磨损建模,必须使用TB,WEAR命令定义专用材料模型。该命令与 TBDATA 相结合,允许用户输入与磨损相关的材料常数,以控制磨损的计算方式以及在接触表面上的应用方式。

jkh920184196的博客 2629

appium自动化测试,startActivity实现不同app之间切换(包括app内部页面切换和不同app跳转)

【代码】appium自动化测试,startActivity实现不同app之间切换(包括app内部页面切换和不同app跳转)

u014496893的博客 1259

XTDrone——ALOAM与3D激光雷达三维SLAM(处理没有点云和坐标系报错的问题)

本文介绍了XTDrone中配置如何在三维环境中使用A-LOAM算法配合velodyneHDL32激光雷达包括依赖包安装、代码修改和PX4系统配置,以及相关报错细节的注意事项。

weixin_45390670的博客 1326

用Cursor+Node.js零代码搭建健康数据仪表盘:从数据录入到可视化全流程

本文详细介绍了如何利用Cursor AI编程助手和Node.js,无需手动编写代码,即可构建个人健康数据仪表盘的全流程。通过自然语言指令,实现从数据录入、存储到动态图表可视化的完整系统,展示了AI驱动开发在降低技术门槛、提升开发效率方面的强大能力。

gitlab7runner的博客 700

Appium-Go Back(返回)

目录Go BackExample UsageSupportAppium ServerAppium ClientsHTTP API SpecificationsURL ParametersJSON ParametersResponse Go Back Navigate backwards in the browser history, if possible (Web context only) //尽可能在浏览器历史记录中向后导航(仅限Web上下文) Example Usage Java

weixin_45576146的博客 864

FFmpeg 部署与使用(含Docker部署)

ffmpeg 部署以及使用

weixin_38584583的博客 910

python+appium,跳过登录操作,直接进入首页

每次执行代码都要清空所有数据并且走一遍登录流程,才能执行操作太麻烦了,下列代码可以直接跳过登录进入app首页。

qq_50264368的博客 1009

保姆级教程:ABAP 通过 HTTP POST 调用 OData 服务创建业务数据的具体例子

笔者之前的文章发布之后,有朋友在评论区留言,询问 ABAP 除了 Web Service 之外,是否也支持 HTTP 呢?ABAP 这么强大的语言,支持 HTTP 当然不在话下。网上有很多在 ABAP 系统基于 CL_HTTP_CLIENT 工具类,通过 HTTP 协议和第三方系统交互的代码例子。本文介绍笔者项目中一个实际例子,实现的是在 ABAP 系统 A 通过 HTTP 调用 OData 服务,在 ABAP 系统 B 创建业务数据的需求。下面我们按照这个套路来一步步实现。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 700

大语言模型与ROS集成的自然语言机器人控制:开源框架与应用实例

近年来,大语言模型(LLM)与机器人操作系统(ROS)的集成逐步成熟,使得自然语言驱动的机器人控制成为可能。用户输入“捡起绿色方块”或“把微波炉里的饭热好端过来”这类日常语句,机器人能够自动拆解步骤、规划动作并执行。本文梳理2026年前后发布的三个代表性开源框架——ROS-LLM、ROSClaw以及LLM+Nav2基准测试系统,介绍其技术路径与工程落地情况。

Studying…… 634

appium自动化打开手机app页面

前置条件:电脑和手机可以互通,电脑安装adb环境。” 就是抖音的页面activity。这样就可以直接使用adb打开抖音了。” 就是抖音的包名,后面的“adb命令方式打开软件。

highfish920的博客 1万+

【LAMMPS学习】四、运行 LAMMPS(2)命令行选项

本部分解释了在安装可执行文件或下载源代码并构建可执行文件后如何运行 LAMMPS。命令文档页面描述了输入脚本的结构以及它们可以包含的命令。

荷塘阅色 5242

1s后跳转 android_案例分享,Appium+Python实现APP启动页跳转到首页!

下面以 MSN news 为例,实现启动APP后跳转到首页的功能,包含使用list进行元素定位、try except else 进行是否首次启动APP判断,logging 进行日志记录等功能。Python资源共享群:484031800一、场景:1.启动APP后连续跳过welcom、interest 、what’s new页面到首页2.判断是否是首次启动,如果首次启动通过出现welcom页面,如果不...

weixin_39917894的博客 146

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python代码跳转到页面_案例分享,Appium+Python实现APP启动页跳转到首页

下面以 MSN news 为例,实现启动APP后跳转到首页的功能,包含使用list进行元素定位、try except else 进行是否首次启动APP判断,logging 进行日志记录等功能。一、场景:1.启动APP后连续跳过welcom、interest 、what’s new页面到首页2.判断是否是首次启动,如果首次启动通过出现welcom页面,如果不是首次启动则直接进入interest页面3...

weixin_40003478的博客 1012

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android studio一个页面等待3秒跳转_案例分享,Appium+Python实现APP启动页跳转到首页...

下面以 MSN news 为例,实现启动APP后跳转到首页的功能,包含使用list进行元素定位、try except else 进行是否首次启动APP判断,logging 进行日志记录等功能。一、场景:1.启动APP后连续跳过welcom、interest 、what’s new页面到首页2.判断是否是首次启动,如果首次启动通过出现welcom页面,如果不是首次启动则直接进入interest页面3...

weixin_39766910的博客 842

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

技术分享 | Appium 用例录制

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

百晓生说测试的博客 1630

技术分享 Appium 用例录制,2024年最新腾讯软件测试面经

外链图片转存中…(img-h5n0YwEI-1713032801589)]

2401_84266059的博客 1418

基于视觉语言模型的Android自动化测试实战:UI-TARS应用与避坑指南

自动化测试是软件工程中保障应用质量、提升迭代效率的关键环节,其核心原理是通过脚本模拟用户操作,验证软件功能。传统基于控件树解析的测试框架,如Appium,常因UI元素定位器脆弱、跨设备适配复杂而面临维护挑战。随着人工智能技术的发展,视觉语言模型为自动化测试带来了新的技术价值。它通过“视觉理解”替代“代码定位”,让AI直接分析屏幕图像并执行自然语言指令,从而降低脚本编写门槛、增强对动态内容和跨分辨率设备的适应性。这一技术尤其适用于移动应用UI交互的自动化验证场景。本文以开源智能体UI-TARS为例,深入探讨如

weixin_30785593的博客 370

App自动化之案例执行完后返回至指定页(两种)

**概述:如果有多条案例时,如果不想每执行完一条案例就重启一次app,就可以在案例执行完后返回到指定页 / 在当前页面找到指定的文本后跳出循环,如果找不到就返回上一个页面,看看是否已经返回至首页了, 如果返回至首页了 则跳出循环,如果还是没返回至首页,则继续执行,知道找到指定的文本所在的页或首页 **/ public static void returnHomePage(String value){ int i = 0; while(i < 10){ i=i+1; try { String text

Caoqingqing521的博客 1219

Appium(五)页面跳转之元素等待时间 WebDriverWait

在我们进行自动化测试的过程中,可能会遇得到页面中的元素出现受到网络环境、设备性能等多种因素的影响,因此会出现元素加载的时间可能不一致,导致有的元素无法定位,超时报错,实际上呢,定位到的元素确实是正常加载了,只不过是出来的时间晚了一点而已,针对这样的情况,可以考虑下元素等待 目录 元素等待的好处 元素等待的类型 1、强制等待 2、隐式等待 3、显式等待 简单例子: ...

多谢大人光临寒舍,请随便看看,喝口茶吧 ☕️☕️☕️ 3782

Python+appium app自动化

ce 一 Appium简介 1. 什么是APpium Appium是一个移动端的自动化测试框架,可用于测试原生应用移动网页应用和混合型应用,且是跨平台的 原生的应用指androi或ios的sdk编写的应用 移动网页应用是指网页应用,类似于ios中的Safari或Chrome应用 混合型应用是介于web-app和native-app之间的应用 Appium是模拟人的操作进行功能自动化,通常用于功能测试和兼容性测试 2. Appium的设计 采用底层驱动商提供的自动化框架 IOS : 苹果的UIA

qq_30075075的博客 2708

android appium 页面如何跳转,【appium实战】appium混合页面点击方法tap的使用

原标题:【appium实战】appium混合页面点击方法tap的使用新书速递文 | 夜鸣猪原生应用开发,是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发;HTML5(h5)应用开发,是利用Web技术进行的App开发。目前,市面上很多app都是原生和h5混合开发,这样做的好处在于:1)开发效率高,节约时间同一套代码Android和IOS基本都可用。2)更...

weixin_27013291的博客 999

07-appium常用操作

TouchAction可以实现一些针对手势的操作,比如滑动、拖动、长按等,我们可以将这些基本手势组合成一个相对复杂的手势,比如我们解锁手机或者一些应用软件都有手势解锁的这种方式。drag_and_drop方法是也是滑动页面,从一个元素滑动到另一个元素,第二个元素代替第一个元素原本屏幕上的位置。scroll方法是滑动页面,不过不是滑动滚动条,而是获取两个元素,然后从一个元素滚动到另一个元素。这里通过代码,将设置页从第一个坐标点(660,1483)滑动到第二个坐标点(660,533)。

学习&记录 1766

appium-常用操作

appium常用操作 1.app相关操作 启动app driver.launch_app()#默认启动的是capabilities配置中的app 切换app driver.start_activity('包名', '活动页') 后台运行app driver.background_app(10)#使当前前台运行app切换到后台10秒,然后又切回到前台 关闭app driver.close_app()#默认关闭capabilities配置中的app 关闭驱动 driver.quit() 2.抓取toa

learn112的博客 1076

跳过开机向导

跳过开机向导

1794
上一篇: Python爬虫入门,煎蛋网XXOO图片抓取!
下一篇: Python基础语法–分支语句介绍!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值