Selenium Server下载地址: http://selenium-release.storage.googleapis.com/index.html
注意:Selenium Server的版本需要与selenium的版本一致
selenium版本查看方法 打开cmd,键入 python - help(selenium)
在 selenium-server-standalone-XXX.jar路径下打开命令行,键入
start java -jar selenium-server-standalone-3.14.0.jar -role hub
客户机上,在 selenium-server-standalone-XXX.jar路径下打开命令行,键入
start java -jar selenium-server-standalone-3.14.0.jar -role node -port 5555 -hub http://localhost:4444/grid/register
脚本思路:在main中使用多线程,通过单个线程来控制单个客户机,本人自己编写的自动化框架是以模块式数据驱动,实际运行时只需要将modules替换至对应的模块就好,这样在做回归或冒烟测试时,使用一台客户机执行一个模块,挺高效的
main文件
#coding=utf-8 ''' Created on 2019年5月26日 @author: pinsengjiujiezhong ''' from selenium.webdriver import Remote from methods import * import threading nodes =[ { 'host' :'http://192.168.0.103:5555/wd/hub', 'browser' : 'chrome', 'modules' : ['thinkpad'] }, { 'host' :'http://192.168.0.105:5556/wd/hub', 'browser' : 'chrome', 'modules' : ['thinkY'] }, ] def run(node): print (node) time.sleep(5) driver = Remote(command_executor=node['host'], desired_capabilities={'platform': 'ANY', 'browserName': node['browser'], 'version': '', 'javascriptEnabled': True}) driver.maximize_window() driver.get('https://www.baidu.com') for module in node['modules']: runCase(module,driver) Threads = [] for node in nodes: Thread = threading.Thread(target=run,args=(node,)) Threads.append(Thread) for Thread in Threads: Thread.start() for Thread in Threads: Thread.join()
methods文件:
#coding=utf-8 ''' Created on 2019年5月26日 @author: pinsengjiujiezhong ''' from selenium import webdriver def runCase(mainName,driver): Boole = eval(mainName)(driver) return Boole def thinkpad(driver): driver.find_element_by_id('kw').send_keys(u'thinkpad') print ('thinkpad: ',driver) write('thinkpad') driver.quit() def thinkY(driver): driver.find_element_by_id('kw').send_keys(u'联想Y7000') print ('联想Y7000: ',driver) write('Y7000') driver.quit() def write(value): with open('rizhi.log','a') as f: f.write(value + '\n')