zoukankan      html  css  js  c++  java
  • Python +appium 封装desired_caps模块

    使用python+appium做android的自动化测试时,首先需要启动appium服务,然后连接上手机,配置如下:

    desired_caps = {"platformName": "Android",
                    "deviceName": "127.0.0.1:62001",
                    "platformVersion": "4.4.2",
                    # apk包名
                    "appPackage": "com.ss.android.article.news",
                    # apk的launcherActivity
                    "appActivity": "com.ss.android.article.news.activity.SplashActivity",
                    "unicodeKeyboard": True,
                    "resetKeyboard": True}
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

    但是换一个app的话就需要改动很多代码,很不方便,可以将参数在配置文件里

        def desired_caps(self):
            desired_caps = {}
            desired_caps["platformName"] = self.data["platformName"]
            desired_caps["deviceName"] = self.data["deviceName"]
            desired_caps["platformVersion"] = self.data["platformVersion"]
            desired_caps["appPackage"] = self.data["appPackage"]
            desired_caps["appActivity"] = self.data["appActivity"]
            desired_caps["noReset"] = self.data["noReset"]
            desired_caps["unicodeKeyboard"] = self.data["unicodeKeyboard"]
            desired_caps["resetKeyboard"] = self.data["resetKeyboard"]
    
            driver = webdriver.Remote("http://" + str(self.data["host"]) + ":" + str(self.data["port"]) + "/wd/hub", desired_caps)

    配置文件使用的yaml文件 

    platformName: Android
    platformVersion: 4.4.2
    deviceName: 127.0.0.1:62001
    appPackage: com.ss.android.article.news
    appActivity: com.ss.android.article.news.activity.SplashActivity
    noReset: True
    unicodeKeyboard: True
    resetKeyboard: True
    host: 127.0.0.1
    port: 4723

    但是其实把参数写在了配置文件里。每次启动的时候还是需要打开appium服务。现在使用adb命令来启动appium,一起封装在desired_caps里面

    class adb_start_appium(object):
        def __init__(self):
            with open('C://Users/EDZ/PycharmProjects/untitled/appium/desired_caps/desired_caps.yaml') as file:
                self.data = yaml.load(file)
    
        def appium_start(self):
            cmd = 'start /b appium -a ' + str(self.data['host']) + ' -p ' + str(self.data['port']) + ' -U ' + self.data['deviceName']
    
            print('%s at %s' % (cmd, ctime()))
            subprocess.Popen(cmd, shell=True, stdout=open('C://Users/EDZ/PycharmProjects/untitled/appium_SH/desired_caps/appium_log/'+str(self.data['port']) + '.log', 'a'), stderr=subprocess.STDOUT)
    
        def desired_caps(self):
            desired_caps = {}
            desired_caps["platformName"] = self.data["platformName"]
            desired_caps["deviceName"] = self.data["deviceName"]
            desired_caps["platformVersion"] = self.data["platformVersion"]
            desired_caps["appPackage"] = self.data["appPackage"]
            desired_caps["appActivity"] = self.data["appActivity"]
            desired_caps["noReset"] = self.data["noReset"]
            desired_caps["unicodeKeyboard"] = self.data["unicodeKeyboard"]
            desired_caps["resetKeyboard"] = self.data["resetKeyboard"]
    
            driver = webdriver.Remote("http://" + str(self.data["host"]) + ":" + str(self.data["port"]) + "/wd/hub", desired_caps)
            driver.implicitly_wait(8)
            return driver
  • 相关阅读:
    让你爱不释手的图片浮动效果
    Polymer API开发指南 (二)(翻译)
    基于HTML5的拓扑图编辑器(2)
    kbengine开源分布式游戏服务端引擎
    Qunee for HTML5 v1.6新版本发布
    [转载] Link prefetch
    小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载三(通过实例来体验生命周期)
    云集,让 web app 像 native app 那样运行(雄起吧,Web 开发者)
    Android设置ToolBar的title文字居中显示
    Task 'assembleXXXDebug' not found in project ':app'.的解决方法
  • 原文地址:https://www.cnblogs.com/wanxiaochao/p/11425004.html
Copyright © 2011-2022 走看看