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必须唯一。否则后面传入键值对会替换掉重名的键值对。
  • 相关阅读:
    ReactNative--Flexbox布局
    ReactNative--资源,文章,等等
    ReactNative--坑--no bundle URL present
    ReactNative--StyleSheet样式表
    ReactNative--项目创建及结构分析
    ReactNative--ReactNative简介
    10-4路径文字排版 这一节完全不明白
    10-3区域文字排版
    10-2使用字符调板
    10-1使用文字工具
  • 原文地址:https://www.cnblogs.com/csj2018/p/10057726.html
Copyright © 2011-2022 走看看