zoukankan      html  css  js  c++  java
  • appium常见问题

    1、如何处理 android 权限弹窗

    # 处理 android 权限弹窗
    while True:
        for i in range(6):
            if '允许' in driver.page_source:
                driver.switch_to.alert.accept()
            time.sleep(1)
        break

    2、如何处理UI自动化中不定时的弹窗,比如升级提示弹窗、营销弹窗、权限弹窗等

    可以在脚本初始化时,启动一个线程来处理

    def popup(driver):
        while True:
            #  权限弹窗
            if '允许' in driver.page_source:
                driver.switch_to.alert.accept()
            # 其他弹窗
            elements = [
                (By.XPATH, '//android.widget.TextView[@text="哈哈"]'),
                (By.XPATH, '//android.widget.TextView[@text="去首页"]'),
                (By.XPATH, '//*[@text="暂时离开"]')
            ]
            for element in elements:
                try:
                    driver.find_element(*element).click()
                except(Exception) as e:
                    print(e, end='')
                time.sleep(1)
                print('...checking..popup...')
            time.sleep(1)
    t
    = Thread(target=popup, args=(driver,)) t.start()

    问题: 如何结束子线程(是否可以使用子进程呢)

    通过进程来解决 

    使用Queue来进行进程间的通信, 思路: 脚本执行完成后, 发生消息给监听该队列的子进程, break掉循环

    from multiprocessing import Queue
    from multiprocessing import Process
    
    q = Queue()
    
    def popup(driver, q):
        while True:
            #  权限弹窗
            if '允许' in driver.page_source:
                driver.switch_to.alert.accept()
            # 其他弹窗
            elements = [
                (By.XPATH, '//android.widget.TextView[@text="哈哈"]'),
                (By.XPATH, '//android.widget.TextView[@text="去首页"]'),
                (By.XPATH, '//*[@text="暂时离开"]')
            ]
            for element in elements:
                try:
                    driver.find_element(*element).click()
                except(Exception) as e:
                    print(e, end='')
                time.sleep(1)
                print('...checking..popup...')
            time.sleep(1)
            # 获取到队列中有值, 则break循环
            try:
                if q.get_nowait() == 'stop':break
            except: pass
    
    if __name__ == '__main__':
        p = Process(target=productor, args=(q,))
        # 等待脚本运行完成, 往队列方式消息
        q.put('stop')

    3、如何识别NATIVE_APP中是否有H5页面

    driver.contexts

    可以识别当前也是的webview ,比如:['NATIVE_APP', 'WEBVIEW_com.android.browser', 'WEBVIEW_com.xx.xx']

    4、如何设置appium不清除APP数据

    # 解决Could not proxy. Proxy error: Could not proxy command to remote server. Original error: Error: socket hang up
    desired_caps['recreateChromeDriverSessions'] = 'True'
    desired_caps['noReset'] = 'True'  # 不清除数据

  • 相关阅读:
    面试题
    面向切面编程 AOP
    matlab提取wind底层数据库操作
    tensorflow(4):神经网络框架总结
    tensorflow(3):神经网络优化(ema,regularization)
    tensorflow(2):神经网络优化(loss,learning_rate)
    tensorflow(1) 基础: 神经网络基本框架
    在anaconda中安装tensorflow
    anaconda利用pip安装module
    python(10): xlsxwriter模块
  • 原文地址:https://www.cnblogs.com/yaoqingzhuan/p/12894833.html
Copyright © 2011-2022 走看看