在 WSL 上的 Rails 中运行 Cucumber 功能测试时返回:
无法打开与 localhost:9515 的 TCP 连接(连接被拒绝 - “localhost”端口 9515 的 connect(2))(Errno::ECONNREFUSED)
尝试在 Ubuntu 上运行 Selenium 但没有成功,然后阅读本文 Chrome 无法在 WSL (Ubuntu 18.04) 中启动,并在 Chromedriver 下显示“DevToolsActivePort 文件不存在” 我尝试了此配置:
Capybara.register_driver :windows_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome()
Capybara::Selenium::Driver.new(app,browser: :chrome, url: 'http://localhost:9515',
desired_capabilities: capabilities)
end
Capybara.javascript_driver = :windows_chrome
Capybara.default_max_wait_time = 5 # Seconds
回声“它有效”| nc -4 -v 本地主机 9515 nc:连接到本地主机端口 9515(tcp)失败:连接被拒绝
回声“它有效”|数控-4-v 172.19.160.1 9515 nc: 连接到 172.19.160.1 端口 9515 (tcp) 失败: 连接超时
在水豚中使用 172.19.160.1(WSL2 IP)时也会超时。
什么可能阻止端口 9515 上的连接?
更新 从这篇文章当使用 Chrome 浏览器运行 WebDriver 时,即使浏览器正常启动,也会收到消息“仅允许本地连接”
我找到了解决方法。如果我像这样启动 Chromedriver,我可以运行测试:
chromedriver.exe --whitelisted-ips=""
不理想;仍在寻找方法来确定正在使用哪些地址和端口。实际上可能是 IPV6 而不是 IPV4?
此错误“使用 Chrome 浏览器运行 WebDriver 时,收到消息“仅允许本地连接”,即使浏览器正常启动”。正如您在更新中所述,由于 Windows 可以将 WSL 视为外部计算机,因此可能会发生这种情况。您可以在ChromeDriver安全注意事项中获得更多信息,但总结一下:“默认情况下,ChromeDriver仅允许本地连接。如果您需要从远程主机连接到它,请在命令上使用--allowed-ips开关行指定允许连接到 ChromeDriver 的 IP 地址列表”
因此,为了解决这个问题,我们可以使用 WSL 中的 ChromeDriver,您必须允许来自 WSL 的请求(来源、IP)。
为此,您可以使用以下命令:
#获取您的 WSL IP 地址 在 POWERSHELL/CMD 上运行
wsl 主机名-I
173.20.139.98
#在此处启用您的 WSL 来源和 WSL IP “your_path_to_windows_chromedriver”/chromedriver.exe --allowed-origins=* --allowed-ips=173.20.139.98
希望有帮助:)