环境准备:
Selenium Server下载地址: http://selenium-release.storage.googleapis.com/index.html
注意:Selenium Server的版本需要与selenium的版本一致
selenium版本查看方法 打开cmd,键入 python - help(selenium)
server 端启动 :
在 selenium-server-standalone-XXX.jar路径下打开命令行,键入
start java -jar selenium-server-standalone-3.14.0.jar -role hub
client启动:
客户机上,在 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')