selenium 测试框架中使用grid
2016-05-06 16:15
489 查看
转载自:http://www.cnblogs.com/tobecrazy/
首先介绍一下grid ,selenium grid 是一种执行测试用例时使用的包含不同平台(windows、Linux、Android)的框架,并且这些平台是由一个中心点控制,这个中心点称之为HUB,而那些不同的平台称之为NODE
其结构如下:
为什么使用selenium grid:
如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的solution就是使用grid.selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。
怎么使用:
首先启用HUB:
在A机器下载:selenium standalone 2.53:http://npm.taobao.org/mirrors/selenium/2.53/
然后创建HUB.bat
内容为:
其默认监听端口4444,默认IP localhost ;如果要修改,只需要加-port 参数和-Hubhost
接下来在B机添加node ,创建Node.bat,这里使用的是修改过的Hubhost Ip 和端口
首先介绍一下grid ,selenium grid 是一种执行测试用例时使用的包含不同平台(windows、Linux、Android)的框架,并且这些平台是由一个中心点控制,这个中心点称之为HUB,而那些不同的平台称之为NODE
其结构如下:
为什么使用selenium grid:
如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的solution就是使用grid.selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。
怎么使用:
首先启用HUB:
在A机器下载:selenium standalone 2.53:http://npm.taobao.org/mirrors/selenium/2.53/
然后创建HUB.bat
内容为:
java -jar selenium-server-standalone-2.53.0.jar -role hub
其默认监听端口4444,默认IP localhost ;如果要修改,只需要加-port 参数和-Hubhost
java -jar selenium-server-standalone-2.53.0.jar -role hub -port 1235 -Hubhost 172.16.0.45
接下来在B机添加node ,创建Node.bat,这里使用的是修改过的Hubhost Ip 和端口
java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://172.16.0.45:1235/grid/register[/code]
为了使用chrome和IE driver,我们需要这样设置,jar包和浏览器在同一目录下java -Dwebdriver.ie.driver="E:\webdriver\IEDriverServer.exe" -Dwebdriver.chrome.driver="E:\webdriver\chromedriver.exe" -jar selenium-server-standalone-2.53.0.jar -role node -hub http://172.16.0.45:1235/grid/register[/code]
分别启动这两个bat
若使用remote Driver,需要设置这样的参数DesiredCapabilities capability = DesiredCapabilities.firefox(); WebDriver driver = new RemoteWebDriver(new URL("http://172.16.0.45:1235/grid/register"), capability); capability.setBrowserName("firefox" );
所以我们索性创建一个beanpackage com.wiley.library.utils; /** * for remote browser bean * @author Wiley * */ public class RemoteBrowserBean { private String browserName; private String hubURL; public String getBrowserName() { return browserName; } public RemoteBrowserBean(String browser) { this.browserName=browser; this.hubURL="http://172.16.0.45:1235/wd/hub"; } public void setBrowserName(String browserName) { this.browserName = browserName; } public String getHubURL() { return hubURL; } public void setHubURL(String hubURL) { this.hubURL = hubURL; } }
然后在DriverFactory里创建getRemoteDriverpackage com.wiley.library.utils; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; public class DriverFactory { /** * This method will create RemoteWebdriver * @author Wiley * @param remoteBrowserBean * @return WebDriver */ public static WebDriver getRemoteDriver(RemoteBrowserBean remoteBrowserBean) { DesiredCapabilities capability = null; if (remoteBrowserBean.getBrowserName().contains("firefox")) { capability = DesiredCapabilities.firefox(); } else if (remoteBrowserBean.getBrowserName().contains("chrome")) { capability = DesiredCapabilities.chrome(); } else if (remoteBrowserBean.getBrowserName().contains("ie")) { capability = DesiredCapabilities.internetExplorer(); capability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); capability.setCapability("ignoreProtectedModeSettings", true); } WebDriver driver = null; try { driver = new RemoteWebDriver( new URL(remoteBrowserBean.getHubURL()), capability); } catch (MalformedURLException e) { e.printStackTrace(); } capability.setBrowserName(remoteBrowserBean.getBrowserName()); driver.manage().window().maximize(); return driver; } }
接下来就可以在case里边使用package com.wiley.library.testcases; import static org.junit.Assert.*; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import com.wiley.library.utils.DriverFactory; import com.wiley.library.utils.RemoteBrowserBean; public class GridDemo { public WebDriver driver; //先要启动server @Test public void accessWebsite() throws Exception{ driver = DriverFactory.getRemoteDriver(new RemoteBrowserBean("chrome")); driver.get("https://www.baidu.com"); driver.findElement(By.id("kw")).sendKeys("selenium"); driver.findElement(By.id("su")).click(); Thread.sleep(3000); assertEquals("selenium_百度搜索",driver.getTitle()); driver.quit(); } }
相关文章推荐
- extjs grid取到数据而不显示的解决
- 基于FineUI Grid控件添加右键菜单
- ExtJS下grid的一些属性说明
- Extjs grid添加一个图片状态或者按钮的方法
- flexigrid 类似ext grid的JS表格代码
- 关于extjs4如何获取grid修改后的数据的问题
- 初学JavaScript_03(ExtJs Grid的简单使用)
- Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
- ExtJS 2.2.1的grid控件在ie6中的显示问题
- 针对Ruby的Selenium WebDriver安装指南
- Selenium处理select标签的下拉框
- Python中使用 Selenium 实现网页截图实例
- selenium grid2 初探
- UI自动化测试框架之Selenium关键字驱动
- selenium使用chrome时,报错ignore certificate errors
- EXTJS----GRID笔记1
- EXTJS----GRID笔记2
- 记一次莫名其妙的Oracle RAC启动失败
- Xtreme Property Grid
- 关于selenium webdriver chromedriver下载的问题