Java 无法使用Selenium grid在Mac OSX上启动Chrome

Java 无法使用Selenium grid在Mac OSX上启动Chrome,java,macos,google-chrome,selenium,grid,Java,Macos,Google Chrome,Selenium,Grid,我试图在MAC Sierra上使用Selenium和Java执行自动化测试,但在运行testng.xml时,我不断遇到以下错误: org.openqa.selenium.WebDriverException:转发新 会话找不到:功能[{browserName=chrome, chromeOptions={args=[-启动最大化,--禁用web安全], 扩展=[],首选项={credentials\u enable\u service=false, profile.password\u mana

我试图在MAC Sierra上使用Selenium和Java执行自动化测试,但在运行
testng.xml
时,我不断遇到以下错误:

org.openqa.selenium.WebDriverException:转发新 会话找不到:功能[{browserName=chrome, chromeOptions={args=[-启动最大化,--禁用web安全], 扩展=[],首选项={credentials\u enable\u service=false, profile.password\u manager\u enabled=false},version=,platform=macOS 10.12}]命令持续时间或超时:61毫秒

集线器和节点在同一台Mac计算机上运行。以下是启动节点的命令行:

java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://localhost:4444/grid/register 
下面是在Windows 10上运行得非常好的示例代码:

capabilities = DesiredCapabilities.chrome();
System.setProperty("webdriver.chrome.driver", "/Users/varun/webautomation/Executables/chromedriver");
capabilities.setBrowserName("chrome");
getPlatformCapabilities(platform);
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("--disable-web-security");
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
driver = new RemoteWebDriver(new URL(remoteAddress), capabilities);
capabilities=DesiredCapabilities.chrome();
System.setProperty(“webdriver.chrome.driver”,“/Users/varun/webautomation/Executables/chromedriver”);
能力。setBrowserName(“chrome”);
getPlatformCapabilities(平台);
ChromeOptions选项=新的ChromeOptions();
options.addArguments(“--start maximized”);
options.addArguments(“--disable web security”);
Map prefs=新的HashMap();
prefs.put(“凭证启用服务”,false);
prefs.put(“profile.password\u manager\u enabled”,false);
选项。设置实验选项(“prefs”,prefs);
能力。设置能力(ChromeOptions.CAPABILITY,选项);
驱动程序=新的RemoteWebDriver(新的URL(remoteAddress)、功能);
谁能帮帮我吗?我搜索过帖子,但似乎找不到解决办法。终端窗口中运行集线器的最后一行是:


收到创建新会话的请求:功能[{browserName=chrome,chromeOptions={args=[--start maximized,--disable web security],扩展=[],prefs={credentials\u enable\u service=false,profile.password\u manager\u enabled=false},version=,platform=macOS 10.12}]默认情况下,selenium网格使用端口4444作为集线器,使用端口5555作为节点。这可能是端口转发问题。您的系统是否允许端口4444和5555。如果未启用,请将其添加到TCP/IP和UDP协议的防火墙中。默认情况下,这两个端口都在Windows中启用。因此,您不会遇到任何问题。

因此,我想出了一个非完美的解决方案,目前正在运行。我不得不删除与传递参数和chrome选项相关的代码,这是问题的根源,因为这在macosx上不起作用。我最后的代码是:

capabilities = DesiredCapabilities.chrome();
System.setProperty("webdriver.chrome.driver","/Users/varun/webautomation/Executables/chromedriver");
capabilities.setBrowserName("chrome");
driver = new RemoteWebDriver(new URL(remoteAddress), capabilities);

我在办公环境中,因此我已要求网络团队检查端口。我还尝试再次使用Windows节点和Mac计算机作为中心,但出现了相同的错误。该节点在启动时被注册,但当测试运行时,Mac计算机无法找到该节点并将其标记为关闭。不过Mac的防火墙已经关闭了。