本文主要分为两部分:
一是Selenium Grid环境搭建过程;
二是运行打开百度网站并截图脚本,验证搭建成功。
什么是Grid
Grid是用来实现分布式测试的工具,在一台机器上执行代码,通过grid驱动多台关联机器进行测试。
主机叫Hub, 驱动机器Node1-Noden等。
环境搭建过程
下载并配置JDK(本文略过)。
下载Grid Server
下载网址:https://www.selenium.dev/downloads/
运行 Grid Server
cmd运行命令:
java -jar selenium-server-standalone-3.14.0.jar -role hub -port 4444
安装成功后浏览器访问:http://localhost:4444/
如果运行上述命令报错:
could not open `D:\jdk1.8\lib\amd64\jvm.cfg'*
将把新增的两个jdk和jre放在环境变量的最前面看如下图解决。
修改并运行配置文件:
hub_config.json文件
{ "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "withoutServlets": [], "custom": {}, "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", "registry": "org.openqa.grid.internal.DefaultGridRegistry", "throwOnCapabilityNotPresent": true, "cleanUpCycle": 5000, "role": "hub", "debug": false, "browserTimeout": 0, "timeout": 1800 }
node_config.json文件
{ "capabilities": [ { "browserName": "firefox", "marionette": true, "maxInstances": 5, "seleniumProtocol": "WebDriver" }, { "browserName": "chrome", "maxInstances": 5, "seleniumProtocol": "WebDriver" }, { "browserName": "internet explorer", "platform": "WINDOWS", "maxInstances": 1, "seleniumProtocol": "WebDriver" }, { "browserName": "safari", "technologyPreview": false, "platform": "MAC", "maxInstances": 1, "seleniumProtocol": "WebDriver" } ], "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "maxSession": 5, "port": -1, "register": true, "registerCycle": 5000, "hub": "http://localhost:4444", "nodeStatusCheckTimeout": 5000, "nodePolling": 5000, "role": "node", "unregisterIfStillDownAfter": 60000, "downPollingLimit": 2, "debug": false, "servlets" : [], "withoutServlets": [], "custom": {} }
cmd运行上面两个文件:
命令:
java -jar selenium-server-standalone-3.14.0.jar -role hub -hubConfig hub_config.json
java -jar selenium-server-standalone-3.14.0.jar -role node -nodeConfig node_config.json
运行成功后截图。
浏览器访问地址:http://localhost:4444/grid/console
如下图,配置成功。
远程测试
实现脚本:
from selenium import webdriver #导入webdriver #配置参数,以chrome浏览器为例 chrom_capabilities={ "browserName":'chrome',#浏览器明恒 "version":"",#版本 "platform":"any",#平台 "javascriptEnabled":"true"#是否支持JavaScript脚本 } driver=webdriver.Remote('http://192.168.3.8:4444/wd/hub',desired_capabilities=chrom_capabilities)#远程连接 driver.get('http://www.baidu.com')#打开百度 driver.get_screenshot_as_file(r'F:\wx重要\PyCharm Community Edition 2018.1.3\zdh\baidu.png')#屏幕截图 print(driver.title) driver.quit()
执行上面脚本时报错。
因为我是本机测试需要充当hub和node,只执行了hub命令,后来执行了node命令成功。
注意点
node节点机器和hub主机环境配置需要保持一致。
cmd运行的命令一个是在hub机器上运行 ,一个是在node机运行。
运行命令完成后才可以在pycharm中执行脚本。
作者:桃子
来源:51Testing软件测试网原创