做练习的时候,自己把自己给坑了!明明定位没问题,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了。