python自动化中的应用_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()))

1418970-20181203120602382-1586029308.png

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())

1418970-20181203120235916-2039867770.png

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)

1418970-20181203121308544-1254272561.png

原因:字典中key必须唯一。否则后面传入键值对会替换掉重名的键值对。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值