appium获取toast和操作webview实例
从testerhome上看到很多测试同学分享了toast的获取方式,其中大部分是java版本的,但也有个python版本的:Appium1.7.2 android toast 消息测试
Appium获取toast实际使用了谷歌改造的Uiautomator2测试框架原理,具体改了哪些东西我还木有细看。
前言:
Appium1.5以后版本(server版本)才支持toast定位,并且’automationName’必须设置为’Uiautomator2’。
因为appium底层使用的uiautomator去执行脚本命令,所以在appium1.5版本后其实在它内部加了uiautomator2进行执行脚本,它内部就实现了获取toast的方式。
目前appium1.7的Android版本支持:Espresso、Uiautomator2、Uiautomator、Selendroid四种驱动模式,后边两个不推荐用了,Espresso这个是最新支持的beta阶段,Uiautomator2是最稳定的,这对搞Espresso的人来说可是好消息。
iOS我还木有调通,这里我讲下Android。
环境准备:
1. appium server 1.7版本 下载地址:appium/appium-desktop
下载appium-desktop-Setup-1.5.0-ia32.exe 并启动服务
2. 安装appium-uiautomator2-driver
使用npm命令安装,npm如何安装自己百度。
npm install appium-uiautomator2-driver
mac本需要自主下载两个apk,(appium-uiautomator2-server-v0.1.8.apk、appium-uiautomator2-server-debug-androidTest.apk)
需要放在本机 path usr/local/lib/node_modules/appium/node_modules/appium-uiautomator2-driver/uiautomator/目录下
下载地址:appium/appium-uiautomator2-server
3. appium-python-client 只要大于1.0版本以上就行
代码示例:
需要自己有一个可以测试toast的包,这里有一个例子https://github.com/Ericsongyl/AndroidToastUtil
或者直接apk:出错了 - 城通网盘-50TB超大网盘
# coding=utf-8
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from appium import webdriver
import unittest
import time
class ToastDemo(unittest.TestCase):
def setUp(self):
desired_caps={}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.2'
#desired_caps['unicodeKeyboard'] = 'true'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['automationName']='Uiautomator2' #这里要声明uiautomator2
desired_caps['udid'] = '98LFBNP22EYL'
desired_caps['appPackage'] = 'com.nicksong.toastutil'
desired_caps['appActivity'] = '.MainActivity'
self.driver=webdriver.Remote("http://localhost:4723/wd/hub",desired_caps)
def tearDown(self):
self.driver.quit()
def test1(self):
time.sleep(5)
self.driver.find_element_by_id("com.nicksong.toastutil:id/bt_default_toast").click()
toast_loc=("xpath",".//*[contains(@text,'默认')]")
e1=WebDriverWait(self.driver,20,0.1).until(EC.presence_of_element_located(toast_loc)) #获取toast位置
print e1.text
二、Appium webview操作示例
前言:
很早之前有写过通过chromedriver驱动webview的文章:https://blog.csdn.net/jack_chen3/article/details/50281581
Webview测试包:出错了 - 城通网盘-50TB超大网盘
这里记录一下实例:
class MyTestCase(unittest.TestCase):
def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.2'
#desired_caps['unicodeKeyboard'] = 'true'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['chromeOptions']={'androidProcess': 'com.example.jack.webviewtest'} #需要添加该配置选项
desired_caps['appPackage'] = 'com.example.jack.webviewtest'
desired_caps['appActivity'] = '.MainActivity'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(5)
def tearDown(self):
self.driver.quit()
def Demo01(self):
time.sleep(2)
s=self.driver.contexts #获取当前存在的上下文对象,可用于切换
for i in s:
print i
print self.driver.current_context
time.sleep(4)
self.driver.switch_to.context("WEBVIEW_com.example.jack.webviewtest") #切换为webview上下文
time.sleep(5)
print self.driver.page_source #打印当前webview的界面
bb=self.driver.find_element_by_xpath("//*[@id='word']")
bb.click()
bb.send_keys("test")
time.sleep(3)
查看webview界面元素:
打开电脑上的chrome浏览器,输入地址chrome://inspect/,操作手机进入到webview页,电脑可以看到这个页面,然后点击inspect,就可以看到类似手机的界面,当操作电脑网页,手机网页会有相应反应。
找到xpath定位后,直接copy xpath就可以定位到该控件。
PS:需要注意的是电脑网络需要翻墙,因为没有翻墙情况时,打开inspect时会显示为空白情况。
appium获取toast和操作webview实例的更多相关文章
- Appium获取toast消息
Android获取toast,需要在参数里设置automationName:Uiautomator2 设置设备的信息 desired_caps = { 'platformName': 'Android ...
- Appium获取toast消息遇到的问题(一)
一.运行错误 Android获取toast,需要在参数里设置automationName:Uiautomator2 1 # 设置设备的信息 2 desired_caps = { 3 'platform ...
- Python+Appium 获取 toast 文本值方法的封装
获取toast内容方法封装如下: def get_Toast(self,message): #查找toast值 ''' method explain:查找toast的值,与find_Toast实现方法 ...
- appium获取Toast内容的方法
做自动化测试的时候,可能需要根据弹出的Toast提示来做下一步判断.这里记录一下获取Toast内容的方法,同时巩固一下显示等待的方法之一WebDriverWait. from selenium.web ...
- appium获取toast方法
配置toast请注意: 1.指定desired_caps["automationName"] = "UiAutomator2" 2.要求安装jdk1.8 64位 ...
- Appium获取toast消息(二)
刚接触appium进行移动端设备的UI自动化,在遇到toast消息的时候很是苦恼了一阵,最后通过强大的搜索引擎找到了个相对解决方法,废话不多说,直接贴代码↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ...
- appium+java(八)获取Toast内容信息
前言 Appium中很经典的问题了,在两年前也就是2017年3月6号07:22分,我才看到appium1.6.3版本的发布,更新内容为Ios上可以实现Toast的获取,而Windows也就是安卓端,还 ...
- Appium+Python之获取toast
思考:手机APP上的必填或错误文本提示一般1-2s就会消失,比较难定位,所以一般的固定元素定位方式是不可用的,那我们如何定位toast呢? 前提:1.Appium1.6.3以上(包括1.6.3) 2. ...
- 『与善仁』Appium基础 — 29、获取toast信息
目录 1.toast介绍 2.toast定位 3.示例 4.封装toast判断 1.toast介绍 Android中的toast是一种简易的消息提示框,toast提示框不能被用户点击,会根据所设置的显 ...
随机推荐
- SQLServer一条SQL查出当月的每一天
from master..spt_values ),,),'2013-02-03')+'-01' as datetime)) 结果: 返回带有年月日的日期 ),),) AS datetime) fro ...
- Libev源码分析02:Libev中的IO监视器
一:代码流程 在Libev中,启动一个IO监视器,等待该监视器上的事件触发,然后调用该监视器的回调函数.整个的流程是这样的: 首先调用ev_default_loop初始化struct ev_loop ...
- 伪静态的实现方法:IIS环境下配置
URL 静态化可以提高搜索引擎抓取,开启本功能需要对 Web 服务器增加相应的 Rewrite 规则,且会轻微增加服务器负担.本教程讲解如何在 IIS 环境下配置各个产品的 Rewrite 规则. 下 ...
- laravel 定时任务通过队列发送邮件
https://www.jianshu.com/p/f6b94596098e 关于laravel发送邮件,请先参考我的另一片文章:laravel sendcloud发送邮件,再继续往下看. 1.用da ...
- js判断浏览设备是 手机端,电脑端还是平板端
console.log(navigator.userAgent); var os = function() { var ua = navigator.userAgent, isWindowsPhone ...
- oracle强制索引失效
如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) . 举例: SELECT ENAME FROM EMP WHERE EMPNO = 79 ...
- vbox ubuntu虚拟机中加载笔记本内置摄像头
使用C:\Program Files\Oracle\VirtualBox\VBoxManage.exe工具加载摄像头 1,显示可用摄像头 C:\Program Files\Oracle\Virtual ...
- Python--day37--守护进程和几个常用的方法
1,p.daemon = True #设置子进程为守护进程 #守护进程会随着主进程的代码执行完毕 而结束 #子进程 --> 守护进程 import time from multiprocessi ...
- dotnet 通过 WMI 获取系统安装软件
本文告诉大家如何通过 WMI 获取系统安装的软件,这个方法不能获取全部的软件 通过 Win32_Product 可以获取系统安装的软件 var mc = "Win32_Product&quo ...
- 微信小程序之在线试题(1)
最近在做一套公司的市场化培训项目,涉及到手机端在线答题的设计,首先摒弃app的模式,那就只剩下微信公众号和小程序,而公众号是可以关联小程序,所以我们只需要做好一套小程序. 因为篇幅问题,下面只讲解在线 ...