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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM