使用selenium-webdriver
时,某些东西试图绑定到端口,侦听未指定的IPv6/ipv4主机(::
/0.0.0.0
(的连接。这触发了防火墙消息。
我想通过强制将其仅绑定到localhost
来避免此防火墙消息,但是我找不到有关该服务器是什么或如何配置的线索。
复制问题的示例代码:
const webdriver = require('selenium-webdriver');
const driver = new webdriver.Builder().forBrowser('chrome').build();
setTimeout(() => {
driver.quit();
}, 10000);
在macOS上,这显示了提示:
您是否希望应用程序"节点"接受传入的网络连接?
显然选择" deny"仍然允许测试运行(无论如何,由于一切都是局部的(,在选择此选项后,操作系统会记住选择,直到更新节点,但我想锁定测试这不是问题。
是什么原因造成的?我该如何配置?
您可以使用硒独立服务器并将其绑定到特定的IP地址。此外,您可以禁用IPv6地址查找。
-
启动Selenium独立服务器,例如:
java -Djava.net.preferIPv4Stack=true -jar selenium-server-standalone-x.xx.x.jar -host 10.20.30.40
-
修改您的WebDriver初始化代码,以明确设置Selenium Server地址:
const driver = new webdriver.Builder().forBrowser('chrome').usingServer('http://10.20.30.40:4444/wd/hub').build();
用您选择的IP地址替换此
10.20.30.40
(IP地址或别名必须存在于您运行测试的系统上(
参考:
- 与JavaScript的Selenium-独立的Selenium Server
- 将硒枢纽连接到云服务器