51Testing软件测试论坛

标题: selenium 测试框架中使用grid [打印本页]

作者: 感悟时分    时间: 2018-5-29 16:00
标题: selenium 测试框架中使用grid
首先介绍一下grid ,selenium grid 是一种执行测试用例时使用的包含不同平台(windows、Linux、Android
)的框架,并且

这些平台是由一个中心点控制,这个中心点称之为HUB,而那些不同的平台称之为NODE

其结构如下:


[attach]115872[/attach]
为什么使用selenium grid:

如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那
么一个比较好的solution就是使用grid.selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个
结构是由一个hub节点和若干个代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且接受
远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。

怎么使用:

首先启用HUB:

在A机器下载:selenium standalone 4.6:http://pan.baidu.com/s/1qWE7SD2

然后创建HUB.bat

内容为:

1 java -jar selenium-server-standalone-2.46.0.jar -role hub
其默认监听端口4444,默认IP localhost  如果要修改,只需要加-port 参数和-Hubhost

java -jar selenium-server-standalone-2.46.0.jar -role hub  -port 1235 -Hubhost 192.168.2.45
接下来在B机添加node ,创建Node.bat,这里使用的是默认的Hubhost Ip 和端口

1 java -jar selenium-server-standalone-2.46.0.jar -role node -hub http://localhost:4444/grid/register
为了使用chrome和IE driver,我们需要这样设置

1 java -Dwebdriver.ie.driver="C:\Users\workspace\Demo\webDriver\IEDriverServer.exe" -Dwebdriver.chr
ome.driver="C:\Users\workspace\Demo\webDriver\chromedriver.exe" -jar selenium-server-standalone-
2.46.0.jar -role node -hub http://localhost:4444/grid/register
分别启动这两个bat

若使用remote Driver,需要设置这样的参数

DesiredCapabilities capability = DesiredCapabilities.firefox();
        WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
        capability.setBrowserName("firefox" );
        capability.setVersion("3.6");
所以我们索性创建一个bean

复制代码
  1. 1 /**
  2. 2  *
  3. 3  */
  4. 4 package com.dbyl.libarary.utils;
  5. 5
  6. 6 /**
  7. 7  * for remote browser bean
  8. 8  * @author Young
  9. 9  *
  10. 10  */
  11. 11 public class RemoteBrowserBean {
  12. 12     private String browserName;
  13. 13     private String version;
  14. 14     private String[] platform;
  15. 15     private String hubURL;
  16. 16     public String getBrowserName() {
  17. 17         return browserName;
  18. 18     }
  19. 19     
  20. 20     public RemoteBrowserBean()
  21. 21     {
  22. 22         this.browserName="firefox";
  23. 23         this.version="38";
  24. 24         this.platform=new String[]{"VISTA", "windows 7"};
  25. 25         this.hubURL="http://localhost:4444/wd/hub";
  26. 26         
  27. 27     }
  28. 28     
  29. 29     public RemoteBrowserBean(String browser)
  30. 30     {
  31. 31         this.browserName=browser;
  32. 32         this.version="42";
  33. 33         this.platform=new String[]{"VISTA", "windows 7"};
  34. 34         this.hubURL="http://localhost:4444/wd/hub";
  35. 35         
  36. 36     }
  37. 37     
  38. 38     public void setBrowserName(String browserName) {
  39. 39         this.browserName = browserName;
  40. 40     }
  41. 41     public String getVersion() {
  42. 42         return version;
  43. 43     }
  44. 44     public void setVersion(String version) {
  45. 45         this.version = version;
  46. 46     }
  47. 47  
  48. 48     
  49. 49     public String[] getPlatform() {
  50. 50         return platform;
  51. 51     }
  52. 52
  53. 53     public void setPlatform(String[] platform) {
  54. 54         this.platform = platform;
  55. 55     }
  56. 56
  57. 57     public String getHubURL() {
  58. 58         return hubURL;
  59. 59     }
  60. 60     public void setHubURL(String hubURL) {
  61. 61         this.hubURL = hubURL;
  62. 62     }
  63. 63     
  64. 64
  65. 65 }
复制代码

复制代码
然后在DriverFactory里创建getRemoteDriver

复制代码
  1. 1 /**
  2. 2      * This method will create RemoteWebdriver
  3. 3      * @author Young
  4. 4      * @param remoteBrowserBean
  5. 5      * @return WebDriver
  6. 6      */
  7. 7     public static WebDriver getRemoteDriver(RemoteBrowserBean remoteBrowserBean) {
  8. 8         DesiredCapabilities capability = null;
  9. 9         if (remoteBrowserBean.getBrowserName().contains("firefox")) {
  10. 10             capability = DesiredCapabilities.firefox();
  11. 11         } else if (remoteBrowserBean.getBrowserName().contains("chrome")) {
  12. 12             capability = DesiredCapabilities.chrome();
  13. 13         }
  14. 14
  15. 15         WebDriver driver = null;
  16. 16         try {
  17. 17             driver = new RemoteWebDriver(
  18. 18                     new URL(remoteBrowserBean.getHubURL()), capability);
  19. 19         } catch (MalformedURLException e) {
  20. 20             e.printStackTrace();
  21. 21         }
  22. 22         capability.setBrowserName(remoteBrowserBean.getBrowserName());
  23. 23         capability.setVersion(remoteBrowserBean.getVersion());
  24. 24         capability.setCapability(remoteBrowserBean.getPlatform()[0],
  25. 25                 remoteBrowserBean.getPlatform()[1]);
  26. 26         driver.manage().window().maximize();
  27. 27         return driver;
  28. 28     }
复制代码

复制代码
接下来就可以在case里边使用

  1. 1 @BeforeClass(alwaysRun=true)
  2. 2     public void beforeTest()
  3. 3     {
  4. 4         driver = DriverFactory.getRemoteDriver(new RemoteBrowserBean("chrome"));
  5. 5     }
复制代码







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2