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