zoukankan      html  css  js  c++  java
  • python 自动化多线程的应用

    1.本机上同时执行多个浏览器

    import threading,sys
    from time import sleep,ctime
    from selenium import webdriver
    path_list=sys.path[0].split("/")
    index = path_list.index("SeleniumOfJenkins")+1
    driver_path="/".join(path_list[:index])+"/driver/"
    def BaiduSearch(browser,search):
        print(browser,search)
        base_url="http://www.baidu.com"
        if browser=="chrome":
            driver=webdriver.Chrome(executable_path=driver_path+"chromedriver")
        elif browser=="firefox":
            driver=webdriver.Firefox(executable_path=driver_path+"geckodriver")
        elif browser == "safari":
            driver=webdriver.Safari()
        driver.implicitly_wait(10)
        driver.get(base_url+"/")
        driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").send_keys(search)
        driver.find_element_by_xpath("//input[@value='百度一下' and @id='su']").click()
        result_text = driver.find_element_by_xpath("//span[@class='nums_text']").text
        assert "百度为您找到相关结果约" in result_text
        sleep(3)
        driver.quit()
    if __name__=="__main__":
        lists = {"chrome": "谷歌", "firefox": "火狐", "safari": "苹果"}
        file = range(len(lists))
        threads = []
        for b, s in lists.items():
            t = threading.Thread(target=BaiduSearch, args=(b, s))
            threads.append(t)
        for i in file:
            threads[i].start()
            print("线程%s 启动 %s"%(i,ctime()))
        for i in file:
            threads[i].join()
            print("线程%s 运行 %s"%(i,ctime()))
    

    2.分布式执行测试用例

    import threading,sys
    from time import sleep,ctime
    from selenium import webdriver
    path_list=sys.path[0].split("/")
    index = path_list.index("SeleniumOfJenkins")+1
    driver_path="/".join(path_list[:index])+"/driver/"
    def BaiduSearch(host,browser):
        print(host,browser)
        base_url="http://www.baidu.com"
        dc={"browserName":browser}
        driver = webdriver.Remote(command_executor=host,desired_capabilities=dc)
        driver.implicitly_wait(10)
        driver.get(base_url+"/")
        driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").send_keys(browser)
        driver.find_element_by_xpath("//input[@value='百度一下' and @id='su']").click()
        result_text = driver.find_element_by_xpath("//span[@class='nums_text']").text
        assert "百度为您找到相关结果约" in result_text
        sleep(3)
        driver.quit()
    if __name__=="__main__":
        lists = {"http://192.168.63.143:5555/wd/hub":"chrome", "http://127.0.0.1:4444/wd/hub":"firefox", "http://127.0.0.1:5555/wd/hub":"safari"}
        file = range(len(lists))
        threads = []
        for b, s in lists.items():
            t = threading.Thread(target=BaiduSearch, args=(b, s))
            threads.append(t)
        for i in file:
            threads[i].start()
            print("线程%s 启动%s"% (i,ctime()))
        for i in file:
            threads[i].join()
            print("线程%s 运行%s" % (i,ctime()))
        print("全部结束",ctime())
    
    

    3FAQ

    3.1.分布式执行时,写入了3个浏览器,但只执行了2个

    lists = {"http://127.0.0.1:5555/wd/hub":"chrome", "http://127.0.0.1:4444/wd/hub":"firefox", "http://127.0.0.1:5555/wd/hub":"safari"}
    print(len(lists))
    for i,j in lists.items():
        print(i,j)
    
    原因:字典中key必须唯一。否则后面传入键值对会替换掉重名的键值对。
  • 相关阅读:
    kafka官方的kafka-server-start.sh不能关闭kafka进程解决办法
    Linux如何切换图形界面和命令行界面
    2019-9-28:渗透测试,基础学习,DNS投毒
    2019-9-28:渗透测试,基础学习,pgp常量,逻辑运算,DNS投毒,笔记
    2019-9-10:渗透测试,基础学习,nmap扫描命令,php基本语法学习,笔记
    2019-9-11:渗透测试,Kill远控软件,初接触
    2019-9-27:渗透测试,metasploit-framework初接触
    2019-9-26:渗透测试,基础学习,js正则以及什么是目录扫描,笔记
    2019-9-26:渗透测试,基础学习,nmap扫描kali虚拟机服务
    2019-9-25:渗透测试,基础学习,Hydra BP爆破,js基本知识,banner信息收集笔记
  • 原文地址:https://www.cnblogs.com/csj2018/p/10057726.html
Copyright © 2011-2022 走看看