Selenium+Python多线程

Python通过两个标准库thread和threading提供对线程的支持。
我们应避免使用thread模块,原因是它不支持线程守护(即当主线程退出时,所有的子线程不管它们还在工作与否,都会被强行退出)。

from threading import Thread
from selenium import webdriver
from time import sleep, ctime

#测试用例
def test_baidu(host, browser):
    print('start: %s' % ctime())
    print(host, browser)

    #当前运行环境
    desired_capabilities = {'browserName': browser}
    driver = webdriver.Remote(command_executor = host, 
                            desired_capabilities = desired_capabilities)
    driver.get('https://www.baidu.com')
    driver.find_element_by_id('kw').send_keys(browser)
    sleep(3)
    driver.close()


if __name__ == '__main__':

    #定义分布式运行环境
    env = {'http://localhost:4444/wd/hub': 'chrome',
                'http://localhost:5555/wd/hub': 'firefox'}#,
                #'http://<remote_ip>:6666/wd/hub': 'internet explorer'}

    #定义空线程数组
    threads = []

    #获取线程数
    loops = range(len(env))

    #创建线程,并追加入线程数组
    for host, browser in env.items():
        thread = Thread(target=test_baidu, args=(host, browser))
        threads.append(thread)

    #启动线程
    for i in loops:
        threads[i].start()

    #守护线程
    for i in loops:
        threads[i].join()

    print('end: %s' % ctime)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一文读懂Python多线程 1、线程和进程 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运...
    星丶雲阅读 5,384评论 0 4
  • 线程 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0....
    不浪漫的浪漫_ea03阅读 2,944评论 0 0
  • 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,...
    chen_000阅读 3,547评论 0 0
  • 聪明摆脱被动拖延的怪圈 不管你本人是否也是一个拖延者,如果你跟一个总是延误事情的人一起生活或是工作,你很可能自己也...
    Dl_毛良伟阅读 1,684评论 0 1
  • 本文主要通过,对比传统PRD文档来谈谈:一份落地的PRD文档应该满足哪些条件?包含哪些要点? 在产品工作中,我发现...
    尽知阅读 6,760评论 0 13

友情链接更多精彩内容