一、应用切换

  应用切换的方法很简单,直接调用driver.start_activity()方法,传入app_package和app_activity参数,示例代码如下:

from appium import webdriver

desired_caps = {}

# 配置平台信息
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '8.0'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['noReset'] = True # 获取应用的包名及启动类名
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = 'com.tencent.mm.ui.LauncherUI' # 与appium server建立连接
driver = webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities=desired_caps) driver.start_activity(app_package='com.autonavi.minimap',
app_activity='com.autonavi.map.activity.SplashActivity')

  代码执行结果演示:

二、toast弹出框处理

1.toast简介

  toast是android中用来显示信息的一种机制,和Dialog对话框不一样的是toast没有焦点,而且toast显示的时间也有限,过很短的时间就会自动消失,并且也不能被点击。

  在appium中,如果想要定位到toast信息,通过appium自带的inspector或者SDK里面的uiautomatorviewer工具发现是定位不到的,没有对应的属性信息,不过在appium v1.6.3及之后的版本支持toast获取。

  

2.toast获取

获取toast信息的注意事项:

  • UIAutomator2只支持android版本5.0及以上
  • appium server版本1.6.3及以上
  • 需安装jdk1.8 64位及以上,并配置环境变量JAVA_HOME和path
  • 启动参数需要指定:desired_caps['automationName'] = 'UiAutomator2'
desired_caps = {}
# 设置UiAutomator2支持toast信息获取
desired_caps['automationName'] = 'UiAutomator2'

xpath表达式:

xpath = '//*[contains(@text, "文本内容")]'

等待:

使用presence_of_element_located,而不能使用visibility_of_element_located,在这里它对toast的可见处理并不支持,会直接抛出命令错误无法执行

# 获取对应的toast信息
xpath_locator = (MobileBy.XPATH, '//*[contains(@text, "{}")]'.format('手机号码或密码不能为空')) try:
WebDriverWait(driver, 10, 0.01).until(EC.presence_of_element_located(xpath_locator)) # 因为toast信息消失的很快,所以频率需要指定,这里设定为0.01
print("已获取到toast信息:{}".format(driver.find_element(*xpath_locator).text))
except:
print("未获取到toast信息!!!")

appium应用切换以及toast弹出框处理的更多相关文章

  1. WindowsPhone模拟简易Toast弹出框

    Coding4Fun这个开源控件中有ToastPrompt这个弹出框组件,但是由于Coding4Fun太庞大,如果只用到ToastPrompt这个控件的话,整个引用不太值当的.于是自己写了一个差不多的 ...

  2. 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框

    尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...

  3. appium按钮定位,去掉弹出框

    #coding=utf-8 这个一定要加上,不然脚本中注释中都不能有中文 ''' Created on 2015年7月2日 @author: liujuan ''' import sys reload ...

  4. 封装一个的toast弹出框(vue项目)

    逆风的方向,更适合飞翔 实现效果 实现步骤 先写出一个toast组件 // Toast.vue <template> <div id="toast" :class ...

  5. 自动化测试基础篇--Selenium弹出框alert

    摘自https://www.cnblogs.com/sanzangTst/p/7685304.html   不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认 ...

  6. 自动化测试-12.selenium的弹出框处理

    前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...

  7. selenium - 弹出框操作

    # 6. 弹出框操作 # 6.1 页面弹出框操作# 页面弹出框 是一个html页面的元素,由用户在页面的操作触发弹出# (1)执行触发操作之后,等待弹出框出现之后,# (2)再定位弹出框中的元素并操作 ...

  8. Selenium+java - 弹出框处理

    一.弹出框分类: 弹出框分为两种,一种基于原生JavaScript写出来的弹窗,另一种是自定义封装好的样式的弹出框,本文重点介绍原生JavaScript写出来的弹窗,另一种弹窗用click()基本就能 ...

  9. python-selenium -- 弹出框处理

    弹出框有两种:页面弹出框(可定位元素能操作).Windows弹出框(不能直接定位) 一.页面弹出框 等待弹出框出现之后,定位弹出框,操作其中元素 如: driver = webdriver.Chrom ...

随机推荐

  1. Struts2.0

    流程详解:   配置详解:   constant  (常用常量配置) 使用Struts2 框架 ,先要导入Struts2 需要的jar 包 , 通过配置中央控制器 以及web.xml 来实现  Str ...

  2. unittest---unittest断言

    在unittest单元测试中也提供了断言的方式,通过断言判断用例有没有成功. unittest常用断言 unittest框架的TestCase类提供以下方法用于测试结果的判断 方法 检查 assert ...

  3. MATLAB实例:绘制折线图

    MATLAB实例:绘制折线图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 条形图的绘制见:MATLAB实例:绘制条形图 用MATLAB将几组不同的数 ...

  4. 【tf.keras】tensorflow datasets,tfds

    一些最常用的数据集如 MNIST.Fashion MNIST.cifar10/100 在 tf.keras.datasets 中就能找到,但对于其它也常用的数据集如 SVHN.Caltech101,t ...

  5. 按位或:多项式,FWT,min-max容斥

    Description: 刚开始你有一个数字0,每一秒钟你会随机选择一个$[0,2^n)$的数字,与你手上的数字进行或(C++, C 的 |, Pascal 的 or)操作. 选择数字i的概率是$p_ ...

  6. Tomcat中的观察者模式

    1. 几个重要的类,接口 LifeCycle : 主题接口 LifeCycleBase : 抽象的主题实现 LifeCycleListener : 观察者 2. 具体分析 public interfa ...

  7. 利用百度文字识别API识别图像中的文字

      本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...

  8. JAVA集合框架(一)-综述

    目录 什么是java集合框架 使用类型安全的容器 集合框架简图 集合类库主要接口简述 Collection接口方法概览 什么是java集合框架 其实就是java类库提供的一套相当完整的各种数据结构的实 ...

  9. 数据显示按规格向datatable中增加空白记录

    /// <summary> /// 按前台分页样式为datatable增加空行 /// </summary> /// <param name="gridPage ...

  10. dataTable 表插入新行

    DataRow dr = dt.NewRow();//定义新行            dr["sumPrice"] = sumPrice;//对应字段赋值            d ...