AttributeError:‘NoneType‘ object has no attribute ‘find_element‘

做练习的时候,自己把自己给坑了!明明定位没问题,driver也设置好,就是一直报错。通过找资料,找了一个多小数的bug,原来是一个缩进的问题,导致封装driver的地方失败。

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time
from settings import platformName,platformVersion,deviceName,appPackage,appActivity

class DriverFactory:
    # 定义一个类属性,用来保存打开的浏览器对象
    driver = None
    @classmethod
    def get_driver(cls):
        global driver
        # 输入属性的值为None,则表示还没有打开浏览器,那么我们就打开浏览器,复制给driver
        if cls.driver is None:

            desired_caps = {
                # 以下三个是手机的信息,如果用了不同的手机就修改
                'platformName':platformName ,  # 被测手机是安卓
                'platformVersion':platformVersion,  # 手机安卓版本
                'deviceName':deviceName ,  # 设备名,安卓手机可以随意填写
                # 以下两个是需要根据情况修改的。后期移动端的应用软件不同,就需要进行修改。可以跟开发要,也可以自己去查(如何获取?是重点)
                'appPackage': appPackage,  # 启动APP Package名称,每个安卓应用的包名是唯一的。
                'appActivity': appActivity,  # 启动Activity名称。

                # 以下5个是默认的,每次都是一样的就可以了
                'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
                'resetKeyboard': True,  # 执行完程序恢复原来输入法
                'noReset': True,  # 不要重置App
                'newCommandTimeout': 6000,
                'automationName': 'UiAutomator2'
            }
            # 连接Appium Server,初始化自动化环境
            # localhost 指的是本机电脑
            # 4723 指的是appium server的端口
            cls.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
            # 设置缺省等待时间
            cls.driver.implicitly_wait(10)
                #由于这个项目依赖于登录,所以我们就直接在这里完成登录操作
                #注意类方法,通过 类名.方法名 即可调用
                # DriverFactory.login()
            #如果是不等于none,则表示浏览器已经打开了,将打开的浏览器对象拿过去用即可
        return cls.driver

错因:return cls.driver缩进了一格,放到if方法里面了。往前一个,就是返回全局的driver了。

你可能感兴趣的:(写bug找bug,python,开发语言)