appium---多進程啟動app(多設備啟動app)


  上一篇簡單的介紹了如何通過多線程進行啟動app,但是后面發現了一個問題,就是app操作必須要等到一台結束后,下一台才能進行任務,那么有沒有辦法讓他們同時運行呢?這個時候我們可以了解下多進程。跳轉門:appium---多線程啟動app(多台設備啟動app)

進程和線程的區別

線程:計算機的執行單位以線程為單位。計算機的最小可執行是線程。。線程是可執行的基本單位,是可被調度的基本單位。線程不可以自己獨立擁有資源。線程的執行,必須依賴於所屬進程中的資源。。

進程:進程是資源分配的基本單位,進程中必須至少應該有一個線程

多進程啟動app

繼續上一篇文章的內容,多進程啟動app,在以前的代碼基礎上進行修改線程部分

通過把啟動appium的方法通過多進程的方法進行啟動。

def main(self):
        '''多進程啟動'''
        multi_list = []
        for i in range(2):
            appium_server = multiprocessing.Process(target=self.get_commad)
            multi_list.append(appium_server)
        for j in multi_list:
            j.start()
        for j in multi_list:
            j.join()

測試用例

上面通過多進程的方法進行了實現了同事啟動appium,但是如果想要繼續啟動webdriver服務,這里安靜選擇了多線程啟動。

# coding:utf-8
from pages.login_page import LoginPage
import time
import os
import threading
import multiprocessing
from common.aa import Server
path  =os.path.dirname(os.getcwd())
# 獲取到yaml文件路徑
yaml_path = os.path.join(os.path.join(path,'config'),'element.yaml')
class BaseDriver:
    def login(self,driver):
        page =LoginPage(driver)
        time.sleep(8)
        # 獲取用戶名元素以及輸入內容
        use = page.get_username_element(yaml_path)
        use.send_keys('1111')
        # 獲取密碼元素以及輸入內容
        pas = page.get_password_element(yaml_path)
        pas.send_keys('22222')
        # 進行點擊登錄
        button = page.get_login_button_element(yaml_path)
        button.click()

if __name__ == '__main__':
    x = BaseDriver()
    server = Server()
    dev = Server().get_driver()
    t1 = threading.Thread(target=server.main)
    t1.start()
    time.sleep(10)
    aa = []
    for i in dev:
        devices = server.android_start(i)
        t2 = threading.Thread(target=x.login,args=(devices,))
        aa.append(t2)
    for j in aa:
        j.start()

這里有安靜執行的結果,動圖有點長。

 

 

安靜可能對線程和進程不是很懂的理解,然后寫出來這么low的代碼,希望有哪位大神看到了,多多指點,共同學習~


免責聲明!

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



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