本篇转自博客:上海-小T

原文地址:http://blog.csdn.net/real_tino/article/details/53467406

Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员经常要测试多浏览器的兼容性,那就可以用到grid了。下面就来介绍如何在多个浏览器上运行同一份脚本。

使用grid所需要的文件:1.Selenium server(即selenium-server-standalone-x.xx.x.jar);2.grid配置文件(该文件负责提供主机和浏览器信息);3.测试脚本。

1.先来看看grid配置文件的内容:

def grid():
    d={'http://127.0.0.1:4444/wd/hub' : 'firefox',
        'http://127.0.0.1:5555/wd/hub' : 'internet explorer',
        }
    return d

该文件定义了一个方法,该方法存放了一个字典,分别给本机分配了2个不同的端口并指定了不同的浏览器(4444是grid hub的默认端口,5555这个是一个node的端口,后续会介绍)。

2.再来看看测试脚本:

# encoding:utf-8
 
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time, os.path
import grid_module
 
for host, browser in grid_module.grid().items():
    driver = webdriver.Remote(
        command_executor=host,
        desired_capabilities={
            'platform': 'ANY',
            'browserName': browser,
            'version': '',
            'javascriptEnabled': True
        }
    )
    driver.get("http://www.baidu.com")
    driver.find_element_by_id("kw").send_keys(u"中国")
    driver.find_element_by_id("su").click()
    time.sleep(3)
    if driver.title == u"中国_百度搜索":
        print("title匹配!")
    else:
        print("title不匹配!")
    driver.close()

该脚本是写了一个百度搜索关键词并做了简单断言的脚本,导入的grid_module就是第一步中的grid配置文件,循环体中写的是从字典中取出主机名和浏览器名赋给下面的参数,这样的话该测试脚本就会接连调用本地的2个指定浏览器并运行。

3.然后就启server了,从http://selenium-release.storage.googleapis.com/index.html上下载对应版本的Selenium server:

下载下来后打开cmd,输入Java -jar selenium-server-standalone-x.xx.x.jar -role hub,这是万恶之源,先启它才能干后面的事。启动之后再打开一个cmd,输入java -jar selenium-server-standalone-x.xx.x.jar -role node -port 5555,这是启动第一个node,指定端口5555,与grid配置文件中所写的端口一致。

hub和node启动好之后我们在浏览器里输入http://127.0.0.1:4444/grid/console,打开grid的控制台: 

我们能看到有一个端口为5555的node已经启动起来了,此处的IP就是本机IP。

4.最后我们运行测试脚本,2个浏览器乖乖地启起来了呢~

Selenium2+python自动化-gird分布式(转载)的更多相关文章

  1. Selenium2+python自动化14-iframe【转载】

    前言 有很多小伙伴在拿163作为登录案例的时候,发现不管怎么定位都无法定位到,到底是什么鬼呢,本篇详细介绍iframe相关的切换 以http://mail.163.com/登录页面10为案例,详细介绍 ...

  2. Selenium2+python自动化61-Chrome浏览器(chromedriver)【转载】

    前言 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrome浏览器版本号,对应的驱动文件版本号又不一样,如果版本号不匹配,是没法启动起来的. 一.Chrome遇到问题 1. ...

  3. Selenium2+python自动化59-数据驱动(ddt)【转载】

    前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...

  4. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)【转载】

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

  5. Selenium2+python自动化55-unittest之装饰器(@classmethod)【转载】

    前言 前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间. 于是就想是不是可以 ...

  6. Selenium2+python自动化52-unittest执行顺序【转载】

    前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺 ...

  7. Selenium2+python自动化47-判断弹出框存在(alert_is_present)【转载】

    前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(ex ...

  8. Selenium2+python自动化43-判断title(title_is)【转载】

    前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取到的结果用做断言. 本篇介绍另外一种方法去判断页面title是否与期望结果一种,用到上一篇Selenium2+p ...

  9. Selenium2+python自动化41-绕过验证码(add_cookie)【转载】

    前言 验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你能破解,说明你们公司的验证码吗安全级别不高,那就需要提高级别了. 对于验证码,要 ...

随机推荐

  1. 使用HashOperations操作redis

    方法 c参数 s说明 Long delete(H key, Object... hashKeys); H key:集合key Object... hashKeys:key对应hashkey  删除ma ...

  2. winform 不同语言(中文,英文等)

    Visual Studio 对于.NET 程序的本地化提供了完整的支持,这里仅介绍实现多语言版本本地化程序的简单步骤.注意黑体处为关键点.一. 窗体本地化    对于Windows 窗体,你需要做的第 ...

  3. [android]不解锁刷机

    本人因为误操作进入andriod recovery模式,显示failed to boot 2,致手机无法恢复出厂值, 当时那叫一个郁闷.上论坛搜寻无数,唉让刷底包的无数(在此不解释),万恶的刷底包. ...

  4. Spring之JDBC

    jdbc.properties driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/ssi?useUnicode ...

  5. BZOJ4367 IOI2014holiday假期(整体二分+主席树)

    显然最优策略是先走到一边要到达的最远城市,再换方向走到另一边要到达的最远城市(当然也可以直接停止),路上参观景点. 先仅考虑求出只向左走,花费时间i时的最优解.如果能求出这个,类似的就可以求出所有情况 ...

  6. P1275 魔板

    题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状态.操作的方式有两 ...

  7. OI中组合数的若干求法与CRT

    OI中组合数的若干求法与CRT 只是下决心整理一下子呢~ 说明:本篇文章采用\(\binom{a}{b}\)而不是\(C_{a}^b\),以\(p\)指代模数,\(fac_i\)指代\(i!\),\( ...

  8. requestAnimationFrame实现一帧的函数节流

    用一个变量判断raf的回调是否已经执行了,已经执行了说明过了一帧,通常是16.7ms,达到了函数节流一帧的目的. var locked = false; window.addEventListense ...

  9. git使用笔记(七)版本回退和撤销

    By francis_hao    Nov 21,2016 从版本库初始化开始,每一步的撤销操作 添加第一个文件 在空的版本库中创建了一个文件并git add到了缓存区,这时候怎么撤销呢? 撤销单个文 ...

  10. Watto and Mechanism Codeforces Round #291 (Div. 2)

    C. Watto and Mechanism time limit per test 3 seconds memory limit per test 256 megabytes input stand ...