appium+python自动化47-app权限弹窗问题

前言

用真机运行appium代码,首次打开app有的手机会出现权限弹窗问题,一般这种弹窗都是在引导页前面或者引导页后面出现。权限弹窗上面的按钮都是固定的,
只需要定位到“始终允许”按钮,点击确定就可以了。还有一个问题是这种弹窗的个数不确定,有的app是2个有的是3个,为了解决这个问题,可以专门写个判断方法。
注意:模拟器是不会有这种权限弹窗的

环境:
appium 1.8
android 7.0
美团app

权限弹窗

1.以美团app为案例,安装app首次启动的时候,在引导页出现权限弹出框,如下图这种

2.这种弹窗是可以直接定位到的,这里不能通过id去定位了,因为弹窗比较多,每次id都不太一样,但是文本text都是一样的:始终允许

定位系统弹窗

1.通过xpath来定位按钮:始终允许

loc = (“xpath”, “//*[@text=’始终允许’]”)

2.用selenium里面的显示等待模块(WebDriverWait)和判断模块(expected_conditions)封装定位方法,之前selenium教程里面详细讲过,这里就不重复写了

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 判断是否有权限弹窗 for i in range(5):    loc = ("xpath", "//*[@text='始终允许']")    try:        e = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(loc))        e.click()    except:        pass

3.写个单独的函数,封装下判断系统权限弹窗,在之前用例前调用一次就可以了

参考代码

# coding:utf-8 from appium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import os import time # 作者:上海-悠悠 QQ交流群:512200893 PATH = lambda x: os.path.join(os.path.dirname(os.path.realpath(__file__)), x) # 百度下载一个美团app,放当前脚本同一目录 print(PATH('meituan_626.apk')) desired_caps = {                'platformName': 'Android',                'deviceName': '127.0.0.1:62001',                'platformVersion': '7.0',                'app': PATH('meituan_626.apk'),                'appPackage': 'com.sankuai.meituan',                'appActivity': 'com.meituan.android.pt.homepage.activity.Welcome',                'noReset': 'true',                # 'resetKeyboard': 'true',                # 'unicodeKeyboard': 'true'                } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) time.sleep(3) def always_allow(driver, number=5):    '''    作者:上海-悠悠 QQ交流群:512200893    fuction:权限弹窗-始终允许    args:1.传driver    2.number,判断弹窗次数,默认给5次    其它:    WebDriverWait里面0.5s判断一次是否有弹窗,1s超时    '''    for i in range(number):        loc = ("xpath", "//*[@text='始终允许']")        try:            e = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(loc))            e.click()        except:            pass if __name__ == "__main__":    # 调用始终允许函数    always_allow(driver)

(0)

相关推荐

  • 【自动化测试】自动化测试框架与工具

    文章目录 1)什么是自动化测试框架? 1.1 什么是框架? 1.2 什么是自动化测试框架? 1.2.1 优点: 1.2.2 框架的基本组件 1.需要配置文件管理: 2.业务逻辑代码和测试脚本分离 3. ...

  • 程序员眼中的测试

    码农的产品和服务大都是以软件形式存在的,我们存在的价值之一就是快速提供高质量的软件产品或服务.如何保障软件的高质量呢?这与软件测试分不开的,测试是保证软件质量的关键环节之一. 老码农早年曾经做过两年的 ...

  • Appium原理与安装 | 白月黑羽教Python

    本教程讲解如何使用Appium进行手机应用的自动化. 学习本课程前,强烈推荐先学习 Selenium Web 自动化课程 Appium 用途和特点 点击这里,边看视频讲解,边学习以下内容 Appium ...

  • Appium+python自动化17-启动iOS模拟器APP源码案例

    前言 上一篇已经可以启动iOS模拟器上的safari浏览器了,启动app比启动浏览器要复杂一点,本篇以github上的源码为案例详细介绍如何启动iOS模拟器的app. 一.clone源码 1.gith ...

  • Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP

    前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itoo ...

  • Appium+python自动化20-查看iOS上app元素属性

    前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素 Mac版的appium1.6的 ...

  • appium+python自动化46-安装app三种方式

    前言 adb安装 1.在app自动化之前,首先手机上有要被测试的app,如何把电脑本地上的app安装到手机上呢?可以在运行自动化代码前,在cmd输入adb指令,把电脑app安装到手机上 adb ins ...

  • Appium+python自动化9-SDK Manager

    前言 SDK Manager到有哪些东西是必须安装的呢? 一.SDK Manager 1.双击打开SDK Manager界面 2.Tools里面前三个是必须下载的 --Android SDK Tool ...

  • Appium+python自动化10-AVD 模拟器

    前言 有些小伙伴没android手机,这时候可以在电脑上开个模拟器玩玩 一.模拟器配置 1.双击启动AVD Manager,进入配置界面 2.点Create按钮创建 3.配置模拟器基本信息 --AVD ...

  • Appium+python自动化11-adb必知必会

    前言 学android测试,adb是必学的,有几个常用的指令需要熟练掌握 一.检查设备 1.如何检查手机(或模拟器)是连上电脑的,在cmd输入: >adb devices 2.一定要看到上图红色 ...

  • Appium+python自动化12-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性 ...

  • Appium+python自动化13-native和webview切换

    前言 现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了. (手机上要先装个百度阅 ...