微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

App 启动后弹出权限窗处理

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

from appium import webdriver from selenium.webdriver.support.ui import webdriverwait from selenium.webdriver.support import expected_conditions as EC import os import time

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


PATH = lambda x: os.path.join(os.path.dirname(os.path.realpath(__file__)), x)


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):
    '''
    fuction:权限弹窗-始终允许
    args:1.传driver
    2.number,判断弹窗次数认给5次
    其它:
    webdriverwait里面0.5s判断一次是否有弹窗,1s超时
    '''
    for i in range(number):
        loc = ("xpath", "//*[@text='始终允许']")
        try:
            e = webdriverwait(driver,5, 0.5).until(EC.presence_of_element_located(loc))
            e.click()
        except:
            pass

if __name__ == "__main__":
    # 调用始终允许函数
    always_allow(driver)

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐