Selenium-Grid2 配置RemoteWebDriver
为什么要使用Selenium Grid ?
- 分布式运行大规模的Test
- 能够通过一个中央点,很容易的运行不同OS上的不同browser
- 最小化对Grid的维护时间,并能充分利用虚拟设备
Selenium Grid 部署与启动
Hub :总控节点,连接调用Node。
Node: 负责执行Tests,调用浏览器。
下面以selenium-server-standalone-2.27.0.jar版本为例:
使用这样3台机器:
- 10.81.14.170
- 10.81.14.180
- 10.81.14.190
启动Hub(10.81.14.180):
java -jar selenium-server-standalone-2.27.0.jar -role hub
在浏览器内打开:http://10.81.14.180:4444/grid/console可以查看Hub状态。也就是说Grid默认启动端口是4444,如果想切换为其他端口,则加-port参数。比如要切换为8888:
java -jar selenium-server-standalone-2.27.0.jar -role hub -port 8888
启动Node(10.81.14.170):
java -jar selenium-server-standalone-2.27.0.jar -role node -hub http://10.81.14.180:8888/grid/register
同样的,也可以使用-port切换node端口,默认端口是5555.
此处的node节点,也可以作为一个单机的远程节点存在,并同时支持RC,WebDriver。浏览器输入http://10.81.14.180:8877/wd/hub可以看到session信息。
然后,同样的启动10.81.14.180、10.81.14.190上的Node节点。
打开浏览器http://10.81.14.180:8888/grid/console,可以看到如下的界面:

至此,Selenium Grid2已经配置成功了。
使用Grid运行Tests
Selenium Grid2是向后兼容的,同时支持RC,WebDriver。如果使用RC,即Selenium1,使用以下的方法:
Selenium selenium = new DefaultSelenium(“10.81.14.180”, 8888, “*firefox”, “http://www.baidu.com”);
使用WebDriver的话,使用以下的方法:
DesiredCapabilities capability = DesiredCapabilities.firefox();
WebDriver driver = new RemoteWebDriver(new URL("http://10.81.14.180:8888/wd/hub"), capability);
可以看出所有的请求都发给了Hub,然后由Hub分配给匹配的节点来执行。
那么,Hub是如何来分配的呢?往下看
Node配置
默认,Node会启动11个浏览器实例:5 Firefox,5 Chrome, 1 Internet Explorer. 从Grid Console界面看出来,为什么每个机器上有22个实例呢?是这样的,Node为了同时支持RC与WebDriver两种协议,所以就是2*11了。把鼠标放到各个浏览器图标上,就可以看出里面的配置区别了。
内容类似:
{
"browserName": "*firefox",
"maxInstances": 5,
"seleniumProtocol": "Selenium"
}
或者
{
"browserName": "firefox",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
}
其中,seleniumProtocol就是定义的不同协议了。
如何修改Driver配置呢?可以从启动参数里操作。
-browser browserName=firefox,version=3.6,maxInstances=5,platform=LINUX
那Node默认启动的配置是什么呢?
由于如果从启动参数里,配置这个多东西,很难写的。因此,官方很人性化的提供了JSON文件来配置。也就是说默认启动的配置如下:
http://code.google.com/p/selenium/source/browse/trunk/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json
如果想自定义配置,直接对json文件修改,启动时,指定配置文件就可以了。
java -jar selenium-server-standalone.jar -role hub -hubConfig hubconfig.json
仅仅就这样就行了?从博文http://www.shenyanchao.cn/blog/2012/10/12/selenium-multiple-browser-support/知道,浏览器的启动是要制定一些driver位置的,否则Node不知道怎么启动浏览器实例。因此需要进行指定:
java -jar selenium-server-standalone-2.27.0.jar -port 8877 -role node -hub http://10.81.14.180:8888/grid/register -nodeConfig nodeconfig.json -Dwebdriver.chrome.driver="E:/selenium/chromedriver.exe" -Dwebdriver.ie.driver="E:/selenium/IEDriverServer.exe"
参考文档:
http://code.google.com/p/selenium/wiki/Grid2
客户端书写测试用例
package seleniumdemo;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class EDemo2 {
public static void main(String[] args) throws MalformedURLException, InterruptedException {
// RemoteWebDriver的基本使用
//第一个参数:表示服务器的地址。第二个参数:表示预期的执行对象,其他的浏览器都可以以此类推
WebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:4444/wd/hub/"), DesiredCapabilities.chrome());
driver.manage().window().maximize();
driver.get("http://www.baidu.com");
Thread.sleep(2000);
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("alert('我现在在服务器')");
Thread.sleep(2000);
driver.quit();
}
}
执行脚本
其实脚本是在服务器端执行的,客户端用于发送命令。执行过程中可以看到服务器端的chrome别调用,同时cmd打印出相关的运行信息,如下
Selenium-Grid2 配置RemoteWebDriver的更多相关文章
- Selenium Grid2
简介 使用selenium-grid可以远程执行测试的代码,核心步骤:grid --> server-->chromedriver驱动 -->chrome浏览器 利用Selenium ...
- Python+selenium之selenium Grid2
利用selenium grid2 keyi可以在不同的主机上建立主节点(hub)和分支节点(node),可以使主节点上的测试用例在不同的分支节点上运行.对不同的节点来说,可以搭建不同的测试环境(操作系 ...
- 9、Selenium grid2
P228--Selenium Grid2 P233--Selenium Grid 工作原理 P236--Remote 应用 P246--WebDriver 驱动 driver = webdriver. ...
- C# selenium环境配置
1.下载C#selenium selenium官网: http://www.seleniumhq.org/download/ 下载后解压: 打开net35后,将里面的dll文件添 ...
- selenium Grid2环境搭建和基本使用
Selenium Grid简介 利用Selenium Grid可以使主节点(hub)的测试用例在不同主机即分支点(node)运行.可以使一份测试用例在不同环境下(操作系统.浏览器)执行自动化测试.Se ...
- Selenium+python 配置
1. 安装python, www.python.org. 下载最新的python,应该是32位的.注意配置环境变量. 2. 安装PIP(pip是一个以Python计算机程序语言写成的软件包管理系统). ...
- Python+Selenium 环境配置之Firefox,IE,Chrome几种浏览器运行
Selenium(Webdriver)支持Firefox,IE,Chrome等多个浏览器.很多人可能装环境时遇到很多问题,下面简单聊聊如何配置测试这几个浏览器以及相关通过简单的实例来测试. 1.Fir ...
- 【Selenium】idea的selenium环境配置
1.maven配置 下载地址:http://maven.apache.org/download.cgi# 下载内容:apache-maven-3.5.0-bin.zip 环境变量:M2_HOME:E: ...
- Selenium chrome配置代理Python版
环境: windows 7 + Python 3.5.2 + Selenium 3.4.2 + Chrome Driver 2.29 + Chrome 58.0.3029.110 (64-bit) S ...
随机推荐
- import是page指令的一个属性。
以下不属于JSP的标准指令的是.(选择1项) A.Taglib B.Include C.Import D.Page 解答:C
- php -- ziparchive::open创建zip压缩文件
语法: mixed ZipArchive::open ( string $filename [, int $flags ] ) 参数: filename:创建的zip的文件名 flags: ZIPAR ...
- Java凝视模板
设置凝视模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是全部需设置凝 ...
- when case group by 的用法集合
1.用那个以前大家都熟悉的例子,要求是依旧下面的表格求每个大洲的人口总和 国家(countrcoungry) 人口(population) 中国 600 美国 100 加拿大 100 英国 200 法 ...
- localStorage变更事件当前页响应新解-awen
html5的localStorage相信大家都是很熟悉了,但是在chrome等支持该对象的浏览器中(ie10除外),如果你监听storage变更事件你就会发现,当数据发生变化时本页是监听不到stora ...
- ios应用, 设置不自己主动备份到iCloud
原创文章,转载请注明出处 ios项目,假设有内置下载或者程序动态生成文件的话,就要注意所下载或生成的文件,要不要自己主动备份到iCloud 假设没有合适的理由就自己主动上传大文件的话,可能在不能通过应 ...
- Java Tomcat 注册为Windows系统服务
注册方法: 1. 在DOS命令行模式下,cd到tomcat的bin目录下 cd tomcatpath 根目录加:后回车 进入到tomcat安装目录,cd bin,进入tomcat启动目录 2.在tom ...
- Python UnboundLocalError 异常
如下,当我们在函数中对全局变量重新赋值的时候就会出现 UnboundLocalError 异常,虽然 num 这个变量在外部已经被定义成全局变量,但是如果在函数中进行重新赋值操作,python 会自动 ...
- 应用开发之Asp.net
本章简言 上一章中笔者讲到关于Linq和EF的用法.并以hibernate来进行讲解.那么本章笔者来讲一下C#的Asp.Net.即是在B/S模式下开发.现在企业大部分的业务都是面向B/S模式的.所以对 ...
- android数据恢复
很多人都有在使用手机时误删数据的经历,比方说和女朋友分手后把之前一起玩耍的影像资料删除了,结果没过几天又复合了,某天女朋友想和你一起回忆某个温馨时刻,这时候拿不出照片或视频来会非常尴尬.为了避免这类人 ...