zoukankan      html  css  js  c++  java
  • 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的代码,希望有哪位大神看到了,多多指点,共同学习~

  • 相关阅读:
    React之Antd组件<Input />属性defaultValue问题记录。
    java多继承问题
    python多继承问题
    React之state
    概念题
    修复linux的yum源
    stl
    java
    python
    各种执行方式
  • 原文地址:https://www.cnblogs.com/qican/p/13044137.html
Copyright © 2011-2022 走看看