Selenium Grid UI自动化分布式

环境准备:

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
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值