赞
踩
Selenium Grid是Selenium的三大组件之一,允许用户同时在不同的机器和系统上测试不同浏览器。
也就是说Selenium Grid支持分布式的测试执行。它可以让你的测试用例在一个分布式的执行环境中运行。
由上图可见,测试脚本会通过selenium hub节点分发给不同的node节点,而不同的node节点所在的操作系统和搭载的浏览器类型可以是不同的,接下来我们看下hub节点和node节点具体分别有什么作用:
环境说明:
环境准备步骤:
测试机器安装JDK,配置环境变量
下载selenium-server-standalone-x.x.x.jar
下载浏览器驱动
Chrome:https://npm.taobao.org/mirrors/chromedriver
Firefox:https://npm.taobao.org/mirrors/geckodriver/
IE:https://npm.taobao.org/mirrors/selenium 注:IE驱动和selenium依赖在一起
java -jar selenium-server-standalone-3.141.59.jar -role hub -port 8888 -maxSession 10
参数解释:
浏览器中输入http://localhost:8888/grid/console 进入到到hub的console控制台
node1节点工作在本地端,配置的浏览器为V68的chrome
java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.4.4:8888/grid/register" -port 5558 -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"
参数解释:
运行之后的效果:
浏览器再次刷新访问hub的console端
node2节点工作在远程端,配置的浏览器为V56的chrome
启动配置为
java -Dwebdriver.firefox.driver="geckodriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.140.1:8888/grid/register" -port 5558 -browser "browserName=firefox,maxInstances=2,version=56,platform=WINDOWS"
浏览器再次刷新访问hub的console端,可以看到两个node节点已经成功注册到hub节点上
-
- // 期望能力对象
-
- DesiredCapabilities capabilities = new DesiredCapabilities();
-
- //配置测试的浏览器,配置Chrome则会启动本地node1节点浏览器进行测试,配置Firefox则会启动远程端的Firefox进行测试
-
- capabilities.setBrowserName(BrowserType.CHROME);
-
- // hub节点
-
- String url = "http://192.168.1.222:8888/wd/hub";
-
- //和hub建立通讯,把相应配置传给hub,hub会根据配置选择注册的node节点,打开相应的浏览器进行测试
-
- WebDriver driver = new RemoteWebDriver(new URL(url), capabilities);
-
- driver.get("http://www.baidu.com");
-
- driver.findElement(By.id("kw")).sendKeys("柠檬班软件测试");
-
- Thread.sleep(10000);
-
- driver.quit();
通过上述配置及脚本我们能够启动本地node1节点和node2节点分别进行测试,单node节点只能支持一款浏览器进行测试,如何让node节点可以支持多款浏览器呢?
答案就是在配置node节点的时候传入的参数配置兼容多款浏览器即可。
node节点可以配置单一浏览器,如chrome、firefox、IE等等,也可以配置兼容多款浏览器
这样只要符合node节点配置中的任何一个,hub会将客户端的执行请求发送过来
java -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.firefox.driver="geckodriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.140.1:8888/grid/register" -port 5555 -browser "browserName=internet explorer,maxInstances=4,version=11,platform=WINDOWS" -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS" -browser "browserName=firefox,maxInstances=3,version=56,platform=WINDOWS"
现在node1节点和node2节点采用相同的启动参数配置启动
我们可以看到,grid的console控制台显示两个node节点都可以支持多浏览器测试
之前启动的方式是通过命令行或者bat脚本启动node节点,官方提供了两种方式,其二就是通过json配置文件启动
java -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig node.json
node.json配置文件如下:
-
- {
-
- "capabilities":
-
- [
-
- {
-
- "browserName": "firefox",
-
- "maxInstances": 5,
-
- "seleniumProtocol": "WebDriver",
-
- "webdriver.firefox.driver":"firefox.exe",
-
- #"firefox_binary":"D:\\Program Files\\Mozilla Firefox\\firefox.exe",
-
- "platform":"WINDOWS"
-
- },
-
- {
-
- "browserName": "chrome",
-
- "maxInstances": 5,
-
- "seleniumProtocol": "WebDriver",
-
- "webdriver.chrome.driver":"chromedriver.exe",
-
- "platform":"WINDOWS"
-
- },
-
- {
-
- "browserName": "internet explorer",
-
- "maxInstances": 5,
-
- "seleniumProtocol": "WebDriver",
-
- "platform":"WINDOWS"
-
- }
-
- ],
-
- "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
-
- "maxSession": 5,
-
- "port": -1,
-
- "register": true,
-
- "registerCycle": 5000,
-
- "hub": "http://192.168.1.222:8888",
-
- "nodeStatusCheckTimeout": 5000,
-
- "nodePolling": 5000,
-
- "role": "node",
-
- "unregisterIfStillDownAfter": 60000,
-
- "downPollingLimit": 2,
-
- "debug": false,
-
- "servlets" : [],
-
- "withoutServlets": [],
-
- "custom": {}
-
- }
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。