Mac系统下Selenium Standalone Server 2.53.1启动死循环求助
解决R中启动Selenium 2.53.1阻塞及端口占用问题
问题根源
- 直接执行
system()命令启动Selenium服务器时,服务器会前台运行,占用R进程导致后续代码无法执行,终端也会因持续输出日志停滞。 - 仅加
&后台运行时,可能因未清理旧进程导致端口被占,或服务器输出未被正确重定向引发隐性冲突。
解决方案
1. 清理占用4200端口的旧进程
打开Mac终端,执行以下命令排查并杀掉占用端口的进程:
# 查看4200端口的占用进程 lsof -i :4200 # 替换<PID>为输出中的进程号,杀掉对应进程 kill -9 <PID>
2. 在R中正确后台启动Selenium 2.53.1
使用带输出重定向的命令,同时设置wait = FALSE让R不等待进程结束:
system("java -jar /Users/macbook/Documents/R/selenium-server-standalone-2.53.1.jar -port 4200 > /dev/null 2>&1 &", wait = FALSE)
参数说明:
> /dev/null:将服务器标准输出重定向到空设备,避免干扰R的输出流2>&1:将错误输出也重定向到标准输出(一同丢弃)&:让服务器在后台运行wait = FALSE:告诉R无需等待该命令执行完成,继续运行后续代码
3. 验证服务器状态并连接
启动后可在终端再次执行lsof -i :4200确认端口已被占用(表示服务器正常运行),然后用RSelenium指定端口连接:
library(RSelenium) # 注意:Selenium 2.53.1需搭配对应版本的浏览器(如Firefox 47.x) remDr <- remoteDriver(port = 4200, browserName = "firefox") remDr$open()
4. 用完后关闭服务器
避免端口长期占用,执行以下命令杀掉Selenium 2.53.1进程:
system("pkill -f selenium-server-standalone-2.53.1.jar")
内容的提问来源于stack exchange,提问作者Flo2020
相关产品推荐
相关产品推荐

