Selenium GridUI自动化分布式

    xiaoxiao2025-03-16  35

    环境准备:

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

     

    最新回复(0)