Appium python+appium+pytest 自动化测试-yaml 文件配置 Capabilities

Tin · 2021年05月21日 · 最后由 Tin 回复于 2021年05月21日 · 2247 次阅读

来自 APP Android 端自动化测试初学者的笔记,写的不对的地方大家多多指教哦😋

在之前的脚本中,我们都把构造 driver 实例对象的数据(即 Desired Capabilities)写在业务代码中,如下所示:

(以下所有内容使用 PageObject 模式,以微博 V10.12.0 做为例子,)

def start(self):
        caps = {"platformName": "Android",
                "deviceName": "U4AIUKFAL7W4MJLR",
                "platforVersion": "9",
                "appPackage": "com.sina.weibo",
                "appActivity": "com.sina.weibo.SplashActivity",
                "autoGrantPermissions": "true",
                "automationName": "UiAutomator2"
                "noReset": True
                }

        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

将数据写在业务代码中,如果换手机后需要修改代码,这样对于项目的维护是比较不方便的,所以将这些配置信息专门写在配置文件中,方便调用和修改。

可以将 desired_caps 文件存在再 config 文件夹中,如下:

desired_caps.yaml 文件中的 Capabilities 数据如下:

platformName: Android
platformVersion: '9'
deviceName: U4AIUKFAL7W4MJLR
appActivity: com.sina.weibo.SplashActivity
appPackage: com.sina.weibo
automationName: UiAutomator2
autoGrantPermissions: true
noReset: true
url: 127.0.0.1这里如果使用localhost会报错)
port: 4723

读取 desired_caps.yaml 文件,构造 driver 的函数:

class AppStart:
    def app_start(self):
        # 从desired_caps.yaml读取driver配置数据
        caps = open(r"E:\\study\\Fork\\WeiboDemo\\Weibo\\config\\desired_caps.yaml", 'r')
        data = yaml.load(caps, Loader=yaml.FullLoader)

        desired_caps = {'platformName': data['platformName'],
                        'platformVersion': data['platformVersion'],
                        'deviceName': data['deviceName'],
                        'appPackage': data['appPackage'],
                        'appActivity': data['appActivity'],
                        'automationName': data['automationName'],
                        'autoGrantPermissions': data['autoGrantPermissions'],
                        'noReset': data['noReset']}

        self.driver = webdriver.Remote('http://' + str(data['url']) + ':' + str(data['port']) + '/wd/hub', desired_caps)
        self.driver.implicitly_wait(10)
        return LoginPage(self.driver)
共收到 4 条回复 时间 点赞
Tin #1 · 2021年05月21日 Author
hellohell 回复

已修改

Tin #2 · 2021年05月21日 Author
木月 回复

好哒,已修改

return self.driver

....

data = yaml.load(caps, Loader=yaml.FullLoader) 解析出来就是符合格式的字典。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册