1、什么是等待activity出现

在启动APP的时候,要配置包名和启动名,一个启动名对应一个页面,也就是启动APP然后打开某一个页面。换句话说,在等待这个页面出现,也就是等待activity出现。(activity相当于启动名)

如果不等待页面完全展示,就直接做下一步点击操作,经常会报错,于是我们会在启动完成的时候加sleep。(同Web自动化类似)

那么问题来了,这个sleep时间到底设置多少合适呢?

设置长了,就浪费时间,设置短了,就会找不到元素报错了。

这个时候我们可以用wait_activity的语法,等到你想点击的页面activity出现了,再点击,可以有效的节省时间。

(同Selenium中的显示等待和隐式等待相关内容)

2、wait_activity()方法

wait_activity()方法是Android特有的,入下所示:

wait_activity(self, activity, timeout, interval=1)

# 返回的True 或 False :

说明:

等待指定的activity出现直到超时,interval为扫描间隔1秒,即每隔几秒获取一次当前的activity

Agrs参数:

  • activity:需等待的目标 activity (相当于启动名,就填写启动名)
  • timeout:最大超时时间,单位是s 。
  • interval:循环查询时间 。

调用方式:driver.wait_activity(‘.activity.xxx’,5,2)

3、获取当前页面的activity方法

获取当前页面的activity方法为:current_activity

调用方式:driver.wait_activity(".Settings$DisplaySettingsActivity", 10 , 2 )

4、综合练习

"""
1.学习目标
熟悉等待activity出现的方法
2.操作步骤
2.1 获取当前页面的activity
driver.current_activity
2.2 等待activity出现
driver.wait_activity(activity,最大等待时间,interval=1)
参数说明:
activity:需等待的目标 activity (相当于启动名,就填写启动名)
timeout:最大超时时间,单位是s
interval:循环查询时间
3.需求
操作设置app,实现上面方法的使用。
""" # 1.导入appium
import time from appium import webdriver # 2.添加启动参数
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP启动名
} # 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 4.操作APP
# 4.1 设置app点击显示按钮
view = driver.find_element_by_android_uiautomator('new UiSelector().text("显示")')
view.click() # 4.2 获取显示页面的activity
# activity = driver.current_activity
# print(activity)
# 注意:
# 这步能够获取到显示页面的activity,
# 证明显示页面的activity已经出现了。
# 在这里我们就先获取到打印出来查看一下。
# 也方便我们下一步.wait_activity()方法的使用。
# 在实际的代码中我们可以注释掉,不执行。 # 4.3 等待显示页面activity出现
driver.wait_activity(".Settings$DisplaySettingsActivity", 10) # 4.4 点击显示页面的壁纸按钮
driver.find_element_by_android_uiautomator('new UiSelector().text("显示大小")').click() # 5.关闭APP
time.sleep(5)
driver.quit()

『与善仁』Appium基础 — 24、等待activity出现的更多相关文章

  1. 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍

    目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...

  2. 『与善仁』Appium基础 — 26、常用手机操作的API说明

    目录 1.获取当前手机的时间 2.获取手机屏幕的宽和高 3.获取手机当前网络 4.设置手机网络模式 5.操作手机通知栏 6.综合练习 7.发送键到设备(掌握) 8.手机截图(掌握) 是针对手机一些常用 ...

  3. 『与善仁』Appium基础 — 5、常用ADB命令(二)

    目录 9.查看手机运行日志 (1)Android 日志 (2)按级别过滤日志 (3)按 tag 和级别过滤日志 (4)日志格式 (5)清空日志 10.获取APP的包名和启动名 方式一: 方式二: 11 ...

  4. 『与善仁』Appium基础 — 9、补充:C/S架构和B/S架构说明

    目录 1.C/S架构和B/S架构概念 2.C/S结构与B/S架构的区别 3.C/S架构和B/S架构优点和缺点 (1)B/S模式的优点和缺点: (2)C/S模式的优点和缺点: 1.C/S架构和B/S架构 ...

  5. 『与善仁』Appium基础 — 10、Appium基本原理

    目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...

  6. 『与善仁』Appium基础 — 12、Appium的安装详解

    目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...

  7. 『与善仁』Appium基础 — 14、Appium测试环境搭建

    目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...

  8. 『与善仁』Appium基础 — 15、使用Appium的第一个Demo

    我们使用Python语言作为测试脚本的编写语言. 执行脚本前提: Android模拟器或者手机是开机状态. 使用确保电脑和Android设备进行了链接. 也就是使用ADB命令adb connect链接 ...

  9. 『与善仁』Appium基础 — 16、APPium基础操作API

    目录 1.前置代码 2.安装和卸载APP 3.判断APP是否已安装 4.关闭APP软件和关闭驱动对象 5.发送文件到手机和获取手机中的文件 6.获取当前屏幕内元素结构(重点) 7.脚本内启动其他APP ...

随机推荐

  1. 高德地图API中折线polyline不能跨越180度经度线的解决方案

    1.问题 最近在使用高德地图的API,有一个需求是画出对象的历史轨迹,采用了高德地图API中的折线polyline函数.但如果需要跨180度经度线的折线,会出现不能跨越的情况,如下图所示: 图中有三个 ...

  2. url,href,src 之间的区别

    url 统一资源定位符 <style> #bg{ background-image:url("img/bg.png"); } </style> 区别: sr ...

  3. 基于WPF的酷炫GUI窗口的实现全过程

    title: 基于WPF的酷炫GUI窗口的实现全过程 date: 2020-08-14 permalink: /build/wpfgui sidebarDepth: 2 tags: wpf gui 软 ...

  4. vue+node+mongondb实战之mongodb登陆操作

    页面搭建基本完成,只是样式还没有美化,由于采取的前后端分离开发,所有页面逻辑全部由vue来负责,后台采用express框架只用来提供 接口,注册就是讲数据存入数据库,比较简单,而登陆碰了一些小问题,发 ...

  5. Centos8 部署 ElasticSearch 集群并搭建 ELK,基于Logstash同步MySQL数据到ElasticSearch

    Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ...

  6. [hdu7097]Just a Data Structure Problem

    (四边形不等式的套路题) 对于某一组$a_{i}$,显然可以区间dp,设$f_{l,r}$表示区间$[l,r]$​的答案,则转移即$$f_{l,r}=\begin{cases}0&(l=r)\ ...

  7. MYSQL免安装

    MYSQL免安装 本文使用mysql 8.0.22进行演示 一.MYSQL 下载 [x] 官网下载:地址:https://dev.mysql.com/downloads/mysql/ [x] 百度云盘 ...

  8. Python之浏览器的前进或后退

    import webbrowserwebbrowser.back() 后退webbrowser.forward() 前进

  9. SpringCloud升级之路2020.0.x版-44.避免链路信息丢失做的设计(1)

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们在这一节首先分析下 Spring Cloud Gateway 一些其他可能丢失链路信息 ...

  10. CF1601E Phys Ed Online

    考虑一个贪心. 我们一定采取的方案是 \(b_i = \min_{j = i - k}^i a_j\) \(\sum a_l + b_{l + k} + \min_{i = 1}^2{b_{l + i ...