selenium grid是一种可提供远程调用的自动化测试工具,公司项目需要自动访问一个网站做一些操作,所以拿来用了。
原理:selenium grid是通过一个类似中转站的环境来分配不同的请求到其他环境来执行,也可以只使用一个环境既做hub中转,也做node执行请求,因为不是做测试,所以我就在一个环境配置了。
selenium grid环境配置:
准备:
selenium-server-standalone-3.9.1.jar下载地址:
jdk1.8(selenium-server-standalone-3.9.1.jar版本需要jdk1.8及以上)
谷歌驱动chromedriver(一定要与node配置环境的chrome版本对应!一定要对应!一定要对应!重要的事情说三遍!)
驱动下载地址:https://npm.taobao.org/mirrors/chromedriver
从70的驱动开始就跟谷歌浏览器一致了,好找一些。不一致的可以点进去看notes.txt有版本对应信息。
1,hub配置:
命令行执行
java -jar D:/selenium/selenium-server-standalone-3.9.1.jar -role hub -maxSession 200 -port 4444
-role hub 声明节点
-maxSession 200 最大会话数量
-port 4444 端口号
2,node配置
命令行执行
java -jar D:/selenium/selenium-server-standalone-3.9.1.jar -role node -port 5555 -hub http://hub的ip:4444/grid/register -maxSession 200 -browser browserName=chrome,version=73,seleniumProtocol=WebDriver,maxInstances=200
-port 5555 端口号
-browser browserName=chrome,version=73 node环境的浏览器信息
-maxSession 200 最大会话数量
maxInstances200 最大实例数量
node环境一定要把驱动chromedriver放在C盘Windows目录下
两个命令执行完是不能关闭的。
成功后应该能在hub环境访问http://ip:4444/grid/console,应该能看到
如果在执行代码时出现
Exception in thread "Thread-1" org.openqa.selenium.WebDriverException: unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"69F5D7B566839FC7A6DD12EAFB3F8061","isDefault":true,"type":"default"},"id":1,"name":"","origin":"://"}
(Session info: chrome=73.0.3683.86)
(Driver info: chromedriver=2.7.236900,platform=Windows NT 6.1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
明显的是chromedriver驱动版本跟chrome版本不对应。
驱动的设置目前看网上说的写在代码里如:
System.setProperty("webdriver.chrome.driver",projectPath+"/WEB-INF/lib/chromedriver.exe");
并没有生效。
配置在环境变量也没有生效
目前我的解决办法是放在C盘Windows目录下(然后命令行输入chromedriver 看到新的版本已经生效,再执行代码久没问题了)