1、selenium grid简介
selenium grid可以同时在不同机器上测试不同浏览器,包含一个hub和至少一个node。node会发送配置信息到hub,hub记录并跟踪每一个node的配置信息,同时hub会接受到即将被执行的测试用例及其相关信息,并通过这些信息自动选择可用的且符合浏览器与平台搭配要求的node,node被选中后,测试用例所调用的selenium命令就会被发送到hub,hub再将这些命令发送到指定给该测试用例的node,之后由node执行测试。
2、selenium grid应用
测试多浏览器的兼容性,减少测试套件运行时间
3、selenium grid部署
这里使用selenium-server-standalone-2.48.2.jar,hub、node都需要启动selenium-server-standalone-2.48.2.jar文件启动
1)hud配置
java -jar selenium-server-standalone-2.48.2.jar -role hub -port 4446 ,默认端口为4444,如下启动成功!
输入http://xxx.xxx.xxx.xxx:4446/grid/console,如图显示
单击view config可以查看selenium grid的配置信息,默认情况单个hub支持的5个会话
也可以通过配置json文件启动
java -jar selenium-server-standalone-2.48.2.jar -role hub xxx.json
2)node配置
目前只配置一个node与hub不在同一机子
通过如下命令可启动默认设置的node,node会将本机操作系统所支持的浏览器信息全部注册到hub上,如下图
客户端cmd输入命令:java -jar selenium-server-standalone-2.48.0.jar -role node -host 27.154.242.214 -hub http://xxx.xxx.xxx.xxx:4446/grid/register
现注册一个node到hub,命令如下:
java -jar selenium-server-standalone-2.48.2.jar -role node -host 27.154.242.214 -hub http://xxx.xxx.xxx.xxx:4446/grid/register -browser browserName=firefox
seleniumProtocol=WebDriver,maxInstances=5,platform=WINDOWS
如上命令只是修改了客户端ip,如果端口被占用,也可以修改客户端端口,再node后加 -port xxx ,默认是5555
注册后服务端日志如图,成功注册了一个node,此时打开http://xxx.xxx.xxx.xxx:4446/grid/console,也会显示注册的node信息,这里就不附图了
注意:客户端必须能telnet进去服务端,服务端也要能telnet进去客户端
4、执行
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- DesiredCapabilities ff =DesiredCapabilities.firefox();
- ff.setBrowserName("firefox");
- ff.setPlatform("WINDOWS");
- WebDriver driver = new RemoteWebDriver(new URL(serverUrl),ff);
- driver.get("https://passport.csdn.net/account/login");
- System.out.println("开始");
- WebDriver augmentedDriver = new Augmenter().augment(driver);
- File screenshot = ((TakesScreenshot) augmentedDriver)
- .getScreenshotAs(OutputType.FILE);
- FileUtils.copyFile(screenshot, new File("11.png"));
- driver.quit();
- }
运行如上实例代码,服务端日志如图,用例分给node 27.154.242.214:5555去执行
客户端日志,就是具体执行selenium命令的日志信息。