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)

原文发布于微信公众号 - 从零开始学自动化测试(yoyoketang)

原文发表时间:2018-05-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小文博客

Jaguar——简约大气——WordPress主题

17480
来自专栏朱丽琪的专栏

Selenium 原理探秘

Selenium 作为目前主流的 web 自动化工具,使用非常广泛,本文介绍 selenium 的发展历程以及对应的工作原理。

1K10
来自专栏Python小屋

Python批量导入图片生成能治疗颈椎病的HTML5版课件

本文要点:Python文件操作,HTML5的figure元素和CSS3属性的用法。 说明:1):本文图片来自于相关阅读中Python批量导出多个PPT/PPTX...

32440
来自专栏向治洪

解决低版本Xcode不支持高版本iOS真机调试的问题

今天在做真机调试的时候,遇到下面的一个问题: ? Could not locate device support files. This iPhone ...

32060
来自专栏Angular&服务

cordova扫描二维码

20230
来自专栏向治洪

抓包神器Charles使用

在软件开发过程中,抓包是常见的必备技能之一。本文主要介绍一下Mac下的抓包利器Charles(另一神器是Fiddler,相关文章:Fiddler),使用Char...

30050
来自专栏向治洪

抓包神器Charles使用

在软件开发过程中,抓包是常见的必备技能之一。本文主要介绍一下Mac下的抓包利器Charles(另一神器是Fiddler,相关文章:Fiddler),使用Char...

31050
来自专栏jojo的技术小屋

原 Vue.js、vue安装步骤、单文件组

作者:汪娇娇 时间:2017年8月30日 1、npm淘宝镜像 直接用npm安装vue-cli会特别慢,在安装vue-cli之前可以先安装一个淘宝镜像。之后的安装...

32440
来自专栏自动化测试实战

Appium+python (3) 异常处理

37150
来自专栏微信小程序开发

小程序不同页面之间的传值方式

今天来说一下小程序不同页面之间传值的几种方式: 1、URL传值 这种方式最常用,比如: wx.navigateTo({ url: '../detail/d...

759100

扫码关注云+社区

领取腾讯云代金券