App处理获取权限的弹窗

在做APP自动化的时候经常会遇到启动app后获取一些权限的弹窗了。
方案1:我们在启动先手动打开APP允许获取权限,然后在desired_caps中加上noReset等于True,这样启动APP就不会出现系统自带的权限弹窗了。

desired_caps = {
            'platformName': PLATFORM,
            'deviceName': deviceName,
            'appPackage': APP_PACKAGE,
            'appActivity': APP_ACTIVITY,
            'noReset': True,
            'newCommandTimeout': 800,
        }

方案二 :封装一个独立的函数,判断系统权限弹窗,再启动后调用一下。[参考]@(https://my.oschina.net/u/873595/blog/792220)

    def resolve_windows(self):
            """权限处理弹窗"""
            try:
                els = self.driver.find_elements_by_class_name('android.widget.Button')
                while True:
                    for el in els:
                        if el.text == u'允许':
                            self.driver.find_element_by_android_uiautomator('new UiSelector().text("允许")').click()
                        elif el.text == u'始终允许':
                            self.driver.find_element_by_android_uiautomator('new UiSelector().text("始终允许")').click()
                        elif el.text == u'确定':
                            self.driver.find_element_by_android_uiautomator('new UiSelector().text("确定")').click()
            except:
                print('未检测到弹窗')

参考代码

import random
import time
from selenium.webdriver.support import expected_conditions as EC
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import os


deviceName = os.popen('adb shell getprop ro.product.model').read()
platformVersion = os.popen('adb shell getprop ro.build.version.release').read()
device = os.popen('adb shell getprop ro.product.name ').read()

# Appium基本参数
PLATFORM = 'Android'
DRIVER_SERVER = 'http://localhost:4723/wd/hub'
class Automation():
    def __init__(self, APP_PACKAGE, APP_ACTIVITY):
        self.desired_caps = {
            'platformName': PLATFORM,
            'deviceName': deviceName,
            'appPackage': APP_PACKAGE,
            'appActivity': APP_ACTIVITY,
            'noReset': False,
            'newCommandTimeout': 800,
        }
        print('打开appium服务器')
        self.driver = webdriver.Remote(DRIVER_SERVER, self.desired_caps)
        self.wait = WebDriverWait(self.driver, 10)
        self.size = self.driver.get_window_size()
    def resolve_windows(self):
            """权限处理弹窗"""
            try:
                els = self.driver.find_elements_by_class_name('android.widget.Button')
                while True:
                    for el in els:
                        if el.text == u'允许':
                            self.driver.find_element_by_android_uiautomator('new UiSelector().text("允许")').click()
                        elif el.text == u'始终允许':
                            self.driver.find_element_by_android_uiautomator('new UiSelector().text("始终允许")').click()
                        elif el.text == u'确定':
                            self.driver.find_element_by_android_uiautomator('new UiSelector().text("确定")').click()
            except:
                print('未检测到弹窗')

AUTO = Automation('com.songheng.eastnews', 'com.oa.eastfirst.activity.WelcomeActivity')
AUTO.resolve_windows()  # 调用处理弹窗函数
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值