我遇到了保存问题。我假设您在启动 python 脚本之前确保您的 java 服务器正在运行? java服务器可以从selenium's download list下载。
当我使用 netstat 评估开放端口时,我注意到 java 服务器没有在特定的 "localhost" 主机上运行:
我启动服务器的时候发现端口号是4444:
$ java -jar selenium-server-standalone-2.35.0.jar
Sep 24, 2013 10:18:57 PM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a standalone server
22:19:03.393 INFO - Java: Apple Inc. 20.51-b01-456
22:19:03.394 INFO - OS: Mac OS X 10.8.5 x86_64
22:19:03.418 INFO - v2.35.0, with Core v2.35.0. Built from revision c916b9d
22:19:03.681 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
22:19:03.683 INFO - Version Jetty/5.1.x
22:19:03.683 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
22:19:03.685 INFO - Started HttpContext[/selenium-server,/selenium-server]
22:19:03.685 INFO - Started HttpContext[/,/]
22:19:03.755 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@21b64e6a
22:19:03.755 INFO - Started HttpContext[/wd,/wd]
22:19:03.765 INFO - Started SocketListener on 0.0.0.0:4444
我可以通过在终端中运行以下命令来查看我的监听端口及其端口号(-n 选项):
$netstat -an | egrep 'Proto|LISTEN'
这让我得到以下输出
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp46 0 0 *.4444 *.* LISTEN
我意识到这可能是个问题,因为 selenium 的套接字实用程序位于:webdriver/common/utils.py 正在尝试通过“localhost”或 127.0.0.1 进行连接:
socket_.connect(("localhost", port))
一旦我将“localhost”更改为 ''(空单引号表示所有本地地址),它就开始工作了。所以现在,utils.py 的前一行看起来像这样:
socket_.connect(('', port))
我正在使用 MacOs 和 Firefox 22。在本文发布时,Firefox 的最新版本是 24,但我听说该版本存在一些安全问题,可能会阻止 selenium 的某些功能(我尚未验证这一点) .无论如何,出于这个原因,我使用的是旧版本的 Firefox。