上一篇简单的介绍了如何通过多线程进行启动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的代码,希望有哪位大神看到了,多多指点,共同学习~